2010-10-23 3 views
0

У меня есть запрос, как этотСтранная Sql Server Query Slow

SELECT TOP 10 
     * 
    FROM NEWS 
    WHERE newsid > AAA 
ORDER BY newsid desc; 

Этот запрос очень медленно для некоторых значений AAA

, например, он быстр для 1,000,000 и 1,400,000, но это очень медленный процесс для 1,355,316

Я смущен !!!

+2

Вы можете опубликовать планы выполнения запроса для 1 400 000 по сравнению с планом запроса для 1,355,316? – InSane

+0

Опубликовать инструкцию CREATE TABLE для таблицы 'NEWS'. Является ли опечаткой, что отправленный запрос не заключает «AAA» в одинарных кавычках? –

ответ

1

Моя первая мысль заключается в том, что он проводит много сравнения строк, и может быть, в вашем случае, где есть 1,355,316 записей, либо строковые значения длинны, либо таблица фрагментирована.

Есть ли указатель на столе?

Чтобы начать чтение о оптимизации запроса, прочитайте this и this.

+0

В чем разница между 1 300 000 и 1 400 000 или 1 000 000. – ehsan

+0

запрос выполняется быстрее без индекса! – ehsan

+0

Вот почему я подумал, что, может быть, таблица была фрагментирована. Возможно, вы можете опубликовать планы выполнения и рассказать нам - все индексы на таблице (включая первичный ключ). –

0

Если в Sql Server 2008 попробуйте с подсказкой FORCESEEK. Вы получите предсказуемые результаты.