你好SQL Server引擎專家;請與我們分享一下您的見解......SQL Server性能:非聚簇索引+ INCLUDE列與聚簇索引 - 等效嗎?
據我所知,非聚集索引上的INCLUDE列允許將其他非關鍵數據與索引頁面一起存儲。
我很清楚聚簇索引對非聚簇索引的性能好處,這是因爲引擎在檢索時必須採取的步驟少一步才能到達磁盤上的數據。
但是,由於INCLUDE列存在於非聚集索引中,因此可以預期以下查詢在場景1和2中具有基本相同的性能,因爲可以從場景2中的索引頁中檢索所有列,而不是訴諸表格數據頁面?
QUERY
SELECT A, B, C FROM TBL ORDER BY A
方案1
CREATE CLUSTERED INDEX IX1 ON TBL (A, B, C);
方案2
CREATED NONCLUSTERED INDEX IX1 ON TBL (A) INCLUDE (B, C);
實際查詢計劃在切換索引設置時會說什麼? – 2010-08-02 01:40:11
它將取決於查詢該表的總體查詢工作量。 – 2010-08-02 01:52:09
有趣的是,在查詢計劃中首選非聚集索引,但使用查詢提示的可能性,引擎根據數據量決定最佳查詢計劃的複雜性以及誰知道其他因素對我而言是一個謎。我真的很想找人說出來,並說INCLUDE專欄不是因爲某些原因或者其他原因而被破解的...... – Tahbaza 2010-08-02 01:54:30