想象一下两个索引:
idx_1 (urlId, name)
idx_2 (urlId)
urlId
为bigint
且name
为nvarchar(320)
。并且使用urlId
进行过滤的查询不会以任何方式影响列name
。
我很感谢基于例子的答案。
修改
从答案中我了解到并非如此简单。这不是'黑与白'。所以我稍微改变了一下我的问题。我假设第二个应该更快一点,因为它更小。但似乎并非在所有情况下都如此。所以 WHEN 在这些情况下,性能没有差异,为什么会发生。
答案 0 :(得分:3)
如果您的数据通常仅基于urlId是唯一的,那么最好不要创建二级索引esp。如果你可以使用irlId作为聚集索引。由于索引的第二部分比bigint大得多,因此每个块有更多的密钥可能会有更好的性能,并且可以避免密钥维护带来的额外开销。但是,如果你可以相当肯定你没有很多共享一个共同urlId的记录,那么2部分可能是更好的最坏情况性能的选择。如果差异对你很重要,你真的需要衡量以确定。