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
4

2 回答 2

3

IX_clicks_token并且uc_token具有几乎相同的定义,唯一不同的是uc_token强制唯一性以及提供非聚集索引。

如果你 delete IX_clicks_tokenuc_token应该改用它,假设没有一些奇怪的边缘情况,剩余的索引是超级碎片化的。

于 2013-03-25T22:28:08.397 回答
1

两者是等价的。可能,由于在相同替代方案的情况下随机优化器选择,它们都被使用。

删除其中之一。没关系,哪个。可能是您不能放弃一个而放弃另一个 - 在这种情况下,您会做出选择。

于 2013-03-25T23:02:21.630 回答