【问题标题】:Sql server missing index shows columns already contained in another indexSql server缺少索引显示已包含在另一个索引中的列
【发布时间】:2012-11-11 07:18:02
【问题描述】:

我有一张桌子Employees(Id,CompanyId,Name,Status....) 我有一个索引Ix_CompanyId_Status(CompanyId,Status)

查看dm_db_missing_index_details,我看到sql server 想要在相等列中的CompanyId 上建立索引,而没有任何不相等列或包含列。

如果它的数据已经包含在上面提到的索引中,为什么还需要这个索引?

【问题讨论】:

  • *missing index DMV" 后面的代码在 SQL Server 中并不是最好的——它有可能会提示缺少索引,即使它已经存在——有时甚至会提示已经存在的完全相同的索引。这些建议必须持保留态度 - 不要只是盲目地创建所有这些索引!就像你所做的那样:检查建议是否有效且有意义 - 如果不是,就像你的情况一样 - 忽略它。

标签: sql-server indexing database-administration


【解决方案1】:

如果 CompanyID 是外键,您可以将其作为建议索引从 dm_db_missing_index_details.

【讨论】:

  • 确实 CompanyId 是外键(到公司表)。我仍然可以安全地忽略该建议吗?
  • 我通常使用索引作为我的外键,因为我很可能加入它并且没有索引会减慢查询速度。而且你应该小心从父表中删除公司。跨度>
  • 但是如果我在 CompanyId 和另一列上有一个索引,那么这个索引对加入查询的表来说不是很好吗?我应该在 FK 上专门添加一个索引吗?
  • 我以前从来没有这样做过,但我认为在这种情况下,不为 FK 添加额外的索引是可以的。(这只是一个猜测)
  • 谢谢。我将尝试使用 SSMS 中的实际查询计划检查它是否有任何影响
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 2017-10-04
  • 2021-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-01
相关资源
最近更新 更多