2013-03-25 21 views
1

我在桌上有這兩個索引,我不知道它們是否可互換? 問題是,當我查看使用情況統計信息時,我發現兩者都在使用。在同一列上可互換的非統計和唯一索引

如果我刪除IX_clicks_token會發生什麼?是否會使用uc_token

CREATE NONCLUSTERED INDEX [IX_clicks_token] ON [dbo].[clicks] 
(
    [token] ASC 
) 


ALTER TABLE [dbo].[clicks] ADD CONSTRAINT [uc_token] UNIQUE NONCLUSTERED 
(
    [token] ASC 
) 


OBJECT NAME  | IX_clicks_token --- uc_token 
user_seeks  | 0 --- 12 
user_scans  | 10500 --- 298 
user_lookups | 0 --- 0 
user_updates | 582272 --- 582272 
last_user_seek | NULL --- 2013-03-24 
last_user_scan | 2013-03-25 --- 2013-03-20 
+0

執行計劃說什麼? – 2013-03-25 22:58:51

回答

3

IX_clicks_tokenuc_token具有幾乎相同的定義,與僅對不同之處在於uc_token實施唯一性以及提供一個非聚集索引。

如果刪除IX_clicks_token,uc_token應該用來代替,假設沒有一些奇怪的邊緣情況下其餘索引超級分片。

1

兩者都是等價的。可能它們只是在使用相同替代品時由於隨機優化器選擇而被使用。

刪除其中之一。真的不重要,哪個。可能是這種情況,你不能放棄一個,而是放棄另一個 - 在這種情況下,選擇是爲你而做的。