2011-11-16 28 views
0
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%,第2個需要35%(批號相對)

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

一號更快

我不知道爲什麼?

+0

什麼**數據類型,這兩個查詢**是'ACCNO'在你的表?在第二個例子中 - TB_TMP_TR2是否有其他一些列定義爲聚簇索引?如果是這樣:什麼專欄?該列的數據類型是什麼? –

回答

1

由於聚集索引必須包含全部列,因此覆蓋非聚簇索引可能會比聚簇索引更窄。越窄意味着它的頁面越少,這意味着更少的讀取(物理和邏輯)。因此,它會更快。 覆蓋是關鍵詞。

請運行帶有

SET STATISTICS TIME ON; 
SET STATISTICS IO ON;