SQL Server 2008 索引

5 index sql-server-2008 sql-server

添加到表中的最佳索引是什么,以便尽可能快地进行此查询。sd.incidents表大约有2.5M条记录,问题大约8K,变化大约120K。

select
  --bunch of fields
from
    sd.incidents a
    left join sd.problems b on a.pr_number = b.pr_number
    left join sd.problems c on b.pr_number = c.parent_pr_number and c.is_root_cause = 1
    left join sd.changes d on b.caused_by_change_number_clean = d.change_number
where
    a.severity in (1,2,3) and
    (a.pr_number is not null or a.parent_number is null)
Run Code Online (Sandbox Code Playgroud)

JNK*_*JNK 1

如果您有大量字段和SELECT/或字段很宽,则应确保这些JOIN字段也是聚集索引。

通过键查找提取几十个字段可能是此类查询中最昂贵的部分。对你的JOIN键进行聚类会放弃这一步。

唯一真正了解的方法是运行查询、检查执行计划并查看瓶颈在哪里。对于该WHERE子句,您可以创建一个仅包含该表的簇键的过滤索引。