[SQL SERVER]善用唯一索引
建立唯一索引可以提供查詢優化程式更多資訊,基本可以提高選擇性且統計值更準確
如果資料表中某些欄位資料確定唯一,那麼建立唯一索引將可帶來不錯的查詢效能
下面簡單測試
欄位c2、c3資料型態和內容皆相同
a:c2欄位建立唯一索引
select top(100) c2 from Testunique
where c2>=10 and c2<=1000
order by c2,c3
b:c3欄位建立非叢集索引
select top(100) c3 from Testunique
where c3>=10 and c3<=1000
order by c3,c2
結論:
該TSQL透過唯一索引排序(order by c2,c3)基本上查詢優化程式不會使用排序運算子
因為唯一索引可以提供更準確的統計資料和選擇性,所以查詢優化程式就不必要使用排序運算子
而反觀使用一般索引排序(order by c3,c2),因為一般非叢集索引無法提供更準確資訊
但為了確保資料結果合乎預期,所以查詢優化程式必須使用排序運算子
兩者雖然執行計畫差異不大,但邏輯讀取(I/O)卻差了快10倍。
參考