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

Откуда: Taganrog
Сообщений: 531
Есть 2 абсолютно идентичных запроса за исключением кол-ва возвращаемых строк:

SELECT  top 300 * 
FROM PAGES
WHERE TYPE = 'L' 
AND ENABLED = 'Y' 
AND INDEXABLE = 'Y' 
AND KEYWORDS != 'manager'
AND CONTAINS(KEYWORDS, '"manager"') 
AND LOCATION != 'london'
AND CONTAINS(LOCATION, '"london"') 
ORDER BY RESULTS DESC 


SELECT  top 3 * 
FROM PAGES
WHERE TYPE = 'L' 
AND ENABLED = 'Y' 
AND INDEXABLE = 'Y' 
AND KEYWORDS != 'manager'
AND CONTAINS(KEYWORDS, '"manager"') 
AND LOCATION != 'london'
AND CONTAINS(LOCATION, '"london"') 
ORDER BY RESULTS DESC 

Планы исполнения у них разные, 1й запрос очень быстрый, 2й очень медленный. Если во втором запросе (top 3) использовать с помощью хинта индекс из 1го - он выполняется очень быстро. Но хинт ставить не хотелось бы. Хотелось бы услышать предложения по поводу изменения скорости 2го запроса
24 июл 09, 19:24    [7458901]     Ответить | Цитировать Сообщить модератору
 Re: SELECT TOP 300 * - летает, SELECT TOP 3 * - медленно  [new]
--__Александр__--
Member

Откуда:
Сообщений: 2631
Так если хинты использовать нельзя то что тогда можно?
Ну статистику проапдейтите. Постройте недостающую.

А почему хинты использовать нельзя?
24 июл 09, 19:28    [7458914]     Ответить | Цитировать Сообщить модератору
 Re: SELECT TOP 300 * - летает, SELECT TOP 3 * - медленно  [new]
Benetton
Member

Откуда: Taganrog
Сообщений: 531
Хинты использовать не нельзя, а нежелательно. Запрос не в хранимке, а посылается с клиентского приложения. Статистика вся проапдейчена, свежая.

Путём экспериментов найдено промежуточное значение:

select top 30 - быстро
select top 20 - медленно
24 июл 09, 19:32    [7458926]     Ответить | Цитировать Сообщить модератору
 Re: SELECT TOP 300 * - летает, SELECT TOP 3 * - медленно  [new]
--__Александр__--
Member

Откуда:
Сообщений: 2631
Все таки надо приветси планы, определение таблицы, и какая статистика и индексы построены.
А индексы прорибилжены?
24 июл 09, 19:37    [7458935]     Ответить | Цитировать Сообщить модератору
 Re: SELECT TOP 300 * - летает, SELECT TOP 3 * - медленно  [new]
Benetton
Member

Откуда: Taganrog
Сообщений: 531
to --__Александр__--

Спасибо за участие! Индексы недавно прошли ребилд, определение таблицы и планы выложу завтра (доступ с домашнего IP на RD закрыт)
24 июл 09, 19:41    [7458947]     Ответить | Цитировать Сообщить модератору
 Re: SELECT TOP 300 * - летает, SELECT TOP 3 * - медленно  [new]
Benetton
Member

Откуда: Taganrog
Сообщений: 531
По поводу "завтра" я погорячился, выходные всё же)
25 июл 09, 19:17    [7460262]     Ответить | Цитировать Сообщить модератору
 Re: SELECT TOP 300 * - летает, SELECT TOP 3 * - медленно  [new]
Benetton
Member

Откуда: Taganrog
Сообщений: 531
Закрываю вопрос - проблема решена переносом процедуры из front-end в базу + использованием хинта.
29 июл 09, 15:43    [7474755]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить