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

Откуда: г. Калуга
Сообщений: 1209
Ниже два запроса При параметре 4556 летают оба, при параметре 4555 первый жутко тормозит. Планы одинаковые. В таблице single_ware_sells - 4.5 млн записей. Кластерный индекс по Ware_Code. Что мне нужно посмотреть, чтоб разобраться с ситуацией? я в этих вопросах слаб
--Запрос 1
select top 1 A.AfsName, WS.orig_price, WS.self_price, Ws.quantity, WS.was_at
from single_ware_sells WS inner join afs A on Ws.object_id = A.AfsId
where WS.ware_code = 4556 (4555)
order by WS.was_at desc

--Запрос 2
select  WS.orig_price, WS.self_price, Ws.quantity, WS.was_at
from single_ware_sells WS 
where WS.ware_code = 4556 (4555)   --Возвращает 309 (45)  записей
 order by WS.was_at desc
25 мар 15, 14:57    [17430371]     Ответить | Цитировать Сообщить модератору
 Re: Время запроса разное  [new]
Glory
Member

Откуда:
Сообщений: 104760
minva
Планы одинаковые.

Как могут быть планы одинаковые у разных запросов ?
Сканировать таблицу до первой нужной записи и сканировать всю таблицу в поисках всех нужных записей - это разные запросы
25 мар 15, 15:00    [17430402]     Ответить | Цитировать Сообщить модератору
 Re: Время запроса разное  [new]
minva
Member

Откуда: г. Калуга
Сообщений: 1209
Glory, планы одинаковые для одного запроса при разных параметрах
25 мар 15, 15:02    [17430418]     Ответить | Цитировать Сообщить модератору
 Re: Время запроса разное  [new]
iap
Member

Откуда: Москва
Сообщений: 47047
И индекса по was_at нет?
25 мар 15, 15:02    [17430420]     Ответить | Цитировать Сообщить модератору
 Re: Время запроса разное  [new]
minva
Member

Откуда: г. Калуга
Сообщений: 1209
iap, есть, по возрастанию
25 мар 15, 15:03    [17430444]     Ответить | Цитировать Сообщить модератору
 Re: Время запроса разное  [new]
Glory
Member

Откуда:
Сообщений: 104760
minva
Glory, планы одинаковые для одного запроса при разных параметрах
\
Ага, везде наверое nested loops. Только в одном случае количество итераций - одна, а во втором - 4.5 млн
25 мар 15, 15:04    [17430456]     Ответить | Цитировать Сообщить модератору
 Re: Время запроса разное  [new]
minva
Member

Откуда: г. Калуга
Сообщений: 1209
Glory, все, нашел отличия в количестве выполнений выделенного пункта (Поиск ключа)
скриншот плана https://yadi.sk/i/gZHL4wZ-fWLuh

Тогда вопрос дальше - как-то улучшить это можно?
25 мар 15, 15:13    [17430560]     Ответить | Цитировать Сообщить модератору
 Re: Время запроса разное  [new]
SomewhereSomehow
Member

Откуда: Moscow
Сообщений: 2480
Блог
minva,

Чисто теоретически, паттерн похож на неравномерное распределение строк при row goal.
Когда-то отвечал на похожий вопрос тут: 15826534
Посмотрите статейку: A query may take a long time to run if the query optimizer uses the Top operator in SQL Server 2008 R2 or in SQL Server 2012, если версия сервера подходящая, попробуйте добавить в конец проблемного запроса рекомендуемый в документации флаг option(querytraceon 4138) и посмотреть, изменится ли что-то, если запрос станет быстрее то дело в этом.

Это только предположение, конечно. Для более точного ответа, нужно на действительный план смотреть. Можете приложить файлом в виде .sqlplan, если рекомендации из статьи не сработают.
25 мар 15, 15:17    [17430583]     Ответить | Цитировать Сообщить модератору
 Re: Время запроса разное  [new]
SomewhereSomehow
Member

Откуда: Moscow
Сообщений: 2480
Блог
minva,

А что касается поиска ключа, встаньте на этот оператор в плане, посмотрите его свойство Output Columns (и/или Predicate, если оно там будет) и добавьте столбцы, которые там перечислены в индекс IX_SingleWareS... (тот который у вас используется в этом плане запроса) - если даже это не уберет проблему, это ускорит запрос, т.к. не придется лазить в кластерный индекс, т.е. оператор Поиск Ключа, должен вообще исчезнуть из плана.
25 мар 15, 15:26    [17430663]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить