Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Jacksotnik Member Откуда: Сообщений: 2 |
Вобщем есть тяблица в ней 30млн записей, индекс по полю DateTime есть. select SD.* from StatisticDay as SD (nolock) where SD.DateTime = '20130410 00:00:00'; Этот запрос выполняется за 5 секунд select SD.* from StatisticDay as SD (nolock) where SD.DateTime between '20130401 00:00:00' and '20130410 23:59:59'; А этот выполняется 90 секунд. Собственно вопрос во-втором скрипте, почему он может так долго отрабатывать? Когда создаю индекс по полю DeteTime с include всех полей данной таблицы то работает очень быстро, но это не вариант так как структура запросов может меняться. Подскажите что еще можно попробывать? |
9 авг 13, 18:56 [14689083] Ответить | Цитировать Сообщить модератору |
Crimean Member Откуда: Сообщений: 13147 |
планчики покажите. вообще-то это совсем разные запросы. первый (очень грубо!) дает 1 строку результата, второй - все, что набежало за сутки. ну и я, обычно, пишу не between а все же >= дата AND < следующая дата. а то можно потерять "хвостик" от 23:59:59.*! |
9 авг 13, 19:01 [14689101] Ответить | Цитировать Сообщить модератору |
Ivan Durak Member Откуда: Minsk!!! Сообщений: 3660 |
Jacksotnik, данных больше -работает дольше. Извиняюсь за каламбур! |
9 авг 13, 19:33 [14689203] Ответить | Цитировать Сообщить модератору |
Mind Member Откуда: Лучший город на Земле Сообщений: 2322 |
|
||
9 авг 13, 20:25 [14689388] Ответить | Цитировать Сообщить модератору |
Jacksotnik Member Откуда: Сообщений: 2 |
Ну это как-бы понятно. Токо вот данных больше в 10 раз а выполняется в 18 раз дольше |
||
13 авг 13, 12:22 [14701291] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104751 |
Наверное потому, что серверу все равно приходится читать всю таблицу ? |
||
13 авг 13, 12:25 [14701328] Ответить | Цитировать Сообщить модератору |
Ivan Durak Member Откуда: Minsk!!! Сообщений: 3660 |
с чего так решили? |
||||
13 авг 13, 12:29 [14701360] Ответить | Цитировать Сообщить модератору |
Crimean Member Откуда: Сообщений: 13147 |
кластерный по этому полю ) |
||
13 авг 13, 12:41 [14701458] Ответить | Цитировать Сообщить модератору |
Гость333 Member Откуда: Сообщений: 3683 |
Покажите планы запросов, а также статистику CPU и IO. |
||
13 авг 13, 12:50 [14701519] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104751 |
С этого - "Когда создаю индекс по полю DeteTime с include всех полей данной таблицы то работает очень быстро" |
||||
13 авг 13, 12:52 [14701538] Ответить | Цитировать Сообщить модератору |
нужен план
Guest |
на самом деле это может говорить либо о том, что без покрывающего индекса план "сваливается" в скан кластерного индекса, либо запрос "тормозят" 100500+ keylookup-ов. |
||||
13 авг 13, 14:09 [14702282] Ответить | Цитировать Сообщить модератору |
Александр52 Member Откуда: Кокосовые острова ส็็็็็ Сообщений: 5136 |
вы думаете существует только линейная зависимость? Смотрите планы - в них скрыты ответы. |
||||
13 авг 13, 14:23 [14702397] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104751 |
На keylookup-ы у оптимизатора есть тресхолд |
||
13 авг 13, 15:48 [14703103] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |