Скорость запросов кластеризованного индекса SQL Server 2005 - PullRequest
4 голосов
/ 16 июня 2009

Наши сайты набираются довольно сложно, поэтому мы смотрим на оптимизацию некоторых наших существующих запросов.

Рассматривая это, мы натолкнулись на несколько запросов, план выполнения которых был примерно в 4-5 раз быстрее, когда в запросе содержится простая ссылка на кластеризованный индекс ... например,

Если это был старый запрос:

SELECT ...
FROM myTable
WHERE categoryID =  @category 

следующий запрос будет выполняться в 4 раза быстрее в соответствии с планом выполнения в SSMS:

SELECT ...
FROM myTable
WHERE categoryID =  @category 
AND lotID = lotID

Мы не можем понять, как это ускорит запрос. Кластерный индекс находится на lotID, но так как он делает сравнение с самим собой, как это помогает?

1 Ответ

6 голосов
/ 16 июня 2009

мне кажется довольно очевидным

ваш первый запрос не охватывается кластеризованным индексом, а второй - так как lotID отсутствует в предложении WHERE первого запроса

Возможно, вы захотите прочитать SQL Server, охватывающий индексы , чтобы увидеть, как все это работает

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

EDIT

Я прочитал AND lotID = @lotID NOT AND lotID = lotID

иногда вы можете подделать кластерный индекс, выполнив команду lotID> 0 (выбрав наименьшее число, которое у вас есть), и вы получите запрос

Так что, если ваш самый маленький lotID = 1, и вы добавляете И lotID> 0

вы также можете видеть поиск вместо сканирования, я демонстрирую, ГДЕ IndexValue> '' в этом посте Всегда ли поиск индекса лучше или быстрее, чем сканирование индекса?

...