Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Странная работа оператора TOP в SQL Server 2005  [new]
googman
Member

Откуда:
Сообщений: 118
Есть таблица - около 8 млн. записей.

Есть индекс на поля orig_loc_code, route_id и pickup_date.

Есть запрос:
select
	orig_loc_code
from 
	sampletable
where 
	route_id = 'Q210'
order by 
	pickup_date desc

Выполняется моментально - возвращает около 4 тыс. записей.

Если в запрос добавить TOP 1:
select TOP 1
	orig_loc_code
from 
	sampletable
where 
	route_id = 'Q210'
order by 
	pickup_date desc
,
то запрос выполняется очень долго. За полчаса так и не выполнился.

Интересные моменты:
1) Если добавить TOP 2 - тот же результат - долго. Если TOP 3 или выше - то снова начинает выполняться моментально.
2) Если в route_id вместо Q210 подставлять другие значения, то с некоторыми значениями быстро работает и TOP 1, и TOP 2, а с другими значениями - та же ситуация, что и с Q210. Причем есть такие значения route, по которым строк в таблице значительно больше, чем по Q210, но по ним работает моментально и TOP 1, и TOP 2.

В чем может быть проблема?
16 июл 09, 13:06    [7423500]     Ответить | Цитировать Сообщить модератору
 Re: Странная работа оператора TOP в SQL Server 2005  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
автор

В чем может быть проблема?


Различие в плана, например, из-за неакутальной статистики.
16 июл 09, 13:13    [7423561]     Ответить | Цитировать Сообщить модератору
 Re: Странная работа оператора TOP в SQL Server 2005  [new]
googman
Member

Откуда:
Сообщений: 118
pkarklin
автор

В чем может быть проблема?


Различие в плана, например, из-за неакутальной статистики.


Спасибо! Да, в этом все дело.
16 июл 09, 13:16    [7423601]     Ответить | Цитировать Сообщить модератору
 Re: Странная работа оператора TOP в SQL Server 2005  [new]
Aleksey-K
Member

Откуда: Москва
Сообщений: 3116
Попробуйте сделать кластерный индекс по pickup_date
С уважением, Алексей
16 июл 09, 13:16    [7423603]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Странная работа оператора TOP в SQL Server 2005  [new]
Fur
Guest
Простите что поднимаю тему.. Но можно немного более популярно пояснить, для начинающих - что это и как лечится?
25 ноя 13, 04:46    [15183211]     Ответить | Цитировать Сообщить модератору
 Re: Странная работа оператора TOP в SQL Server 2005  [new]
Ruuu
Member

Откуда: Иркутск
Сообщений: 4272
Fur
Простите что поднимаю тему.. Но можно немного более популярно пояснить, для начинающих - что это и как лечится?
Если вам не понятно, что написал pkarklin, то вряд ли.
У Гранта Фритчи есть хорошая книга про планы запросов SQL Server Execution Plans, Second Edition
Можно скачать бесплатно и легально.
25 ноя 13, 05:10    [15183218]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить