Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 18.03.2016
Сообщений: 2
1

Медленная работа с локальной переменной

18.03.2016, 12:25. Показов 930. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго дня!
Объясните новичку, почему одни и те же запросы с и без использования локальных переменных выполняются существенно разное количество времени?
Пример:
T-SQL
1
2
3
4
    
SELECT TOP(100) * 
FROM source_table 
WHERE date_time >='2015-01-02' AND date_time <'2015-01-03'
Время выполнения 0 сек.
Такой же запрос с использованием локальных переменных:
T-SQL
1
2
3
4
5
6
7
8
DECLARE @startdate datetime
DECLARE @enddate datetime
SET @startdate = '2015-01-02'
SET @enddate = '2015-01-03'
 
SELECT TOP(100) * 
FROM source_table 
WHERE date_time >= @startdate AND date_time < @enddate
Время выполнения 3 минуты.
Доп информация:
В таблице source_table записей очень много (несколько миллионов).
По полю date_time выстроен некластеризованный индекс.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.03.2016, 12:25
Ответы с готовыми решениями:

Медленная работа БД в локальной сети
Здравствуйте! Подскажите в сл.проблеме: Имеем грубо говоря 2 сервера в лок.сети: (serv1 на...

Медленная работа базы по локальной сети
Добрый день. На серваке Freebsd 7.0 стоит база, работающая на FB2.5, к которой имеют доступ...

Aser v5 i7 u - очень медленная загрузка системы и такая же медленная работа приложений
Всем привет. Полгода назад купил ноут ( aser v5 i7 u) . Все было нормально, но неделю назад...

Медленная передача данных по локальной сети.
У меня &quot;большой&quot; компьютер с ХР и ноутбук с &quot;семёркой&quot;. Я соединил их друг с другом кабелем для...

3
3545 / 2119 / 752
Регистрация: 02.06.2013
Сообщений: 5,143
18.03.2016, 12:44 2
Явление называется "parametrs sniffing". И уже масса статей на эту тему написана.

Вкратце:
В первом случае в предикатах константы и оптимизатор строит оптимальный план выполнения запроса основываясь на их значениях.
Во втором случае на момент построения плана значения переменных в предикатах неизвестны, поэтому оптимизатор строит "универсальный" план выполнения, исходя из того, что в этих переменных могут быть любые значения.

В общем случае, эти планы различны. Отсюда и разное время выполнения.
1
0 / 0 / 0
Регистрация: 18.03.2016
Сообщений: 2
18.03.2016, 14:42  [ТС] 3
Спасибо!
Интересная тема. Прочитал подиагонали
http://www.somewheresomehow.ru... app-part1/
.
Ситуация описана, причина ясна. Остался вопрос в решении. Или с этим ничего нельзя поделать?
0
3545 / 2119 / 752
Регистрация: 02.06.2013
Сообщений: 5,143
18.03.2016, 15:28 4
Цитата Сообщение от superk0rvin Посмотреть сообщение
Остался вопрос в решении. Или с этим ничего нельзя поделать?
Ну так в той же статье и решения описаны.
0
18.03.2016, 15:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.03.2016, 15:28
Помогаю со студенческими работами здесь

Медленная передача файлов по вайфай внутри локальной сети
Всем привет. У меня возник следующий вопрос. Я работаю в офисе, у нас тут около 40-50 девайсов...

Медленная скорость передачи данных между 2 компьютерами в локальной сети
Здравствуйте. Вообщем дома 2 компа состоят в локальной сети. Оба компьютера подключены кабелем к...

Медленная работа с БД
Две программы на Delphi обращаются к одной БД. Проблема в том, что когда одна программа вносит...

Медленная работа с БД
Есть MS SQL-2008 на неплохом железе - ОЗУ 96 Гб. На нём есть база CRM Dynamics. Счёт записям идёт...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru