【问题标题】:Missing Index - Non-clustered index from Execution Plan SQL Server 2008缺少索引 - 执行计划 SQL Server 2008 中的非聚集索引
【发布时间】:2012-07-09 18:42:25
【问题描述】:

如您所见,我的tblClaims 表上有一个三字段外键。此表的id 是一个连续整数。运行特定查询时,我注意到查询太长而无法运行。所以我包括了执行计划并被告知

missing index: create nonclustered index on patientid, admissiondate, dischargedate

我很想做

create nonclustered index ix_tblClaims on tblClaims
(patientID asc, admissiondate asc, dischargedate asc)

我在这里和那里阅读了一些关于多列索引或以不同方式索引每列的内容。如果我遵循单独索引每一列的方法,那么只使用一个索引是否正确?

【问题讨论】:

    标签: sql-server sql-server-2008 indexing


    【解决方案1】:

    是的。这样想,如果我给你一张按名称列出所有城镇的地图,你会很快找到你想去的城镇。如果它随后按顺序列出了所有街道地址,那么您可以很快找到“10 london road”地址,但您可能需要一段时间才能找到您正在寻找的城镇中的地址。如果它的后面有一个索引,按城镇排序,然后按街道排序,那么您可以一步找到您要查找的实际地址,非常快。

    数据库中的索引也不例外。如果您需要基于多个事物进行查找,那么您需要一个可以涵盖您正在查找的事物的索引。

    【讨论】:

    • 我添加了有问题的索引,查询从 42 秒缩短到不到 1 秒 :)
    猜你喜欢
    • 2020-04-15
    • 2011-06-02
    • 2011-10-07
    • 2015-06-13
    • 2011-06-24
    • 2018-05-08
    • 2012-10-01
    • 2011-01-22
    相关资源
    最近更新 更多