2012-07-09 60 views
3

enter image description here缺失索引 - 从执行计划的SQL Server 2008

正如你可以看到我有三场的外键我tblClaims table. The id`此表的是一个连续的整数非聚集索引。当运行特定查询时,我注意到查询太长而无法运行。所以,我包括执行计划,被告知

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

我很想做
create nonclustered index ix_tblClaims on tblClaims (patientID asc, admissiondate asc, dischargedate asc)

我已经在这里和那里读了一些东西约多列索引或索引的每一列不同。如果我按照单独索引每列的方法,是否正确只使用一个索引?

回答

2

是的。这样想一下,如果我给了你一张按名称列出所有城镇的地图,你会发现你想要快速到达的城镇。如果之后有了所有的街道地址,那么你可以很快找到'10伦敦之路'的地址,但是你可能需要一段时间才能找到你要找的城镇。如果它的背面有一个索引,然后通过街道,那么您可以很快找到您要查找的实际地址。

在数据库中建立索引没有什么不同。如果你需要根据不止一件事来查找,那么你需要一个可以覆盖你正在查找的东西的索引。

+0

我添加了有问题的索引,并且查询从42秒变成了小于1 :) – wootscootinboogie 2012-07-09 19:12:35