执行计划表明聚集索引查询的成本高于非聚集索引

时间:2011-11-16 07:32:46

标签: sql-server indexing

SELECT SUM(AMT) FROM TB_TMP_TR GROUP BY ACCNO
SELECT SUM(AMT) FROM TB_TMP_TR2 GROUP BY ACCNO

唯一不同的是TB_TMP_TRACC作为聚集索引,TB_TMP_TR2ACC作为非聚集索引。

执行计划显示第一个占65%,第二个占35%(批量相对)

但是

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

第一个更快

我想知道为什么?

1 个答案:

答案 0 :(得分:1)

覆盖非聚集索引可能比聚簇索引更窄,因为聚簇索引必须包含所有列。更窄意味着它拥有更少的页面,这意味着更少的读取(物理和逻辑)。因此,它会更快。 涵盖是关键词。

请使用

运行两个查询
SET STATISTICS TIME ON;
SET STATISTICS IO ON;