查詢計畫是效能調優的地圖。本文以 pubs.big_sales 表為例,逐步解析 SET SHOWPLAN_TEXT ON 輸出,對比 Clustered Index Scan、Nonclustered Index Scan、Covering Query(覆蓋查詢)的 I/O 差異,教您一眼識別效能瓶頸。
SELECT title_id FROM big_sales; -- 僅讀非叢集索引 ndx_sales_ttlID
-- 輸出:|--Index Scan(OBJECT:([pubs].[dbo].[big_sales].[ndx_sales_ttlID]))
查詢欄位全包含於索引中,無需回表,I/O 極低。設計覆蓋索引(INCLUDE 欄位)是加速唯讀查詢的利器。
Key Lookup 表示非叢集索引需回叢集索引取欄位;RID Lookup 則回堆表。若頻繁出現,考慮加入 INCLUDE 欄位或調整叢集鍵。