我最近运行了一个执行计划,SSMS建议我在表中添加一个非聚集索引。
起初我通过DB Diagram gui添加了索引。它给我的索引看起来像这样:
CREATE NONCLUSTERED INDEX [IX_MyTable] ON [dbo].[MyTable]
(
[ID_ForeignKey] ASC,
[ID] ASC
)
这不是它正在寻找的指数。接下来,我在对象资源管理器中右键单击添加了索引。我将它添加到ID_Foreign密钥表中,在“包含的列”页面中,我包含了ID列。它给我的索引看起来像这样:
CREATE NONCLUSTERED INDEX [IX_MyTable] ON [dbo].[MyTable]
(
[ID_ForeignKey] ASC
)
INCLUDE ( [ID])
这是它正在寻找的指数。
这些指数之间有什么区别?
答案 0 :(得分:3)
第一个在两列上创建一个索引,按第一列和第二列排序。
第二个索引仅对第一列进行排序,但也携带第二列的数据。这避免了需要返回到表以获取该列的数据。
第一个索引需要对插入和更新进行更多计算,因此如果您不需要索引第二列,请使用索引的第二个版本。两者都将提供您所需的数据,而无需在表格中查找。