План выполнения показывает, что запрос кластеризованного индекса стоит больше, чем некластеризованный индекс - PullRequest
0 голосов
/ 16 ноября 2011
SELECT SUM(AMT) FROM TB_TMP_TR GROUP BY ACCNO
SELECT SUM(AMT) FROM TB_TMP_TR2 GROUP BY ACCNO

Единственное, что отличается: TB_TMP_TR имеет ACC в качестве кластеризованного индекса и TB_TMP_TR2 имеет ACC в качестве некластеризованного индекса.

План выполнения показывает, что 1-й - это 65%, а 2-й - 35% (относительно партии)

но с

SELECT * FROM TB_TMP_TR WHERE ACCNO = @acc
SELECT * FROM TB_TMP_TR2 WHERE ACCNO = @acc

1-й быстрее

Мне интересно, почему?

1 Ответ

1 голос
/ 16 ноября 2011

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

Пожалуйста, запустите два запроса с

SET STATISTICS TIME ON;
SET STATISTICS IO ON;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...