建立主鍵(叢集索引)後,對另一欄位加 UNIQUE 約束,該欄位資料自動按遞增排序顯示。
UNIQUE CONSTRAINT 在 SQL Server 內部以 唯一非叢集索引 實作。ORDER BY 時,最佳化器可能直接掃描該唯一索引回傳資料,呈現索引順序(即該欄位排序後順序)。
-- 查看執行計畫
SET SHOWPLAN_TEXT ON;
SELECT col FROM table;
SET SHOWPLAN_TEXT OFF;
-- 會看到 Index Scan 使用該唯一索引
SELECT col FROM table ORDER BY id;(主鍵順序)或 ORDER BY col DESC。ORDER BY。insert_time DATETIME2 DEFAULT SYSDATETIME() 欄位並建立索引,查詢時 ORDER BY insert_time。「unique約束是通過索引來實現的,而索引的特點就是順序... 直接從唯一索引中取數了,所以數據就會按照這個唯一索引來排序。」