SQL Server索引

时间:2010-08-24 14:20:59

标签: sql-server-2005

Windows Server 2008 R2上的SQL Server 2005 SP3。

我运行了服务器端跟踪,并使用DTA(数据库引擎优化顾问) 在一个表上,DTA建议我使用群集密钥创建非聚簇索引。我的意思是每个DTA我需要使用显式的clustred索引键创建一个复合非clustred索引作为非聚集索引的一部分。

我认为在叶级非clustred索引已经包含了聚类键。

MeasurementDataID是一个主键,并且在其上有聚集索引......

CREAT INDEX IX_NAME(
[MeasurementID] ASC,
[SampleName] ASC,
[MeasurementDataID] ASC )

1 个答案:

答案 0 :(得分:0)

在叶级别,它确实包含了聚类键,因此您拥有的索引将覆盖查询。

但如果您的查询是

WHERE MeasurementID = 1 AND SampleName = 'foo' AND MeasurementDataID=10

如果不包含MeasurementDataID,它仍然需要扫描与WHERE MeasurementID = 1 AND SampleName = 'foo'部分匹配的索引中的所有记录,而不是用搜索来满足整个事物,这取决于前两个是如何选择性的可能仍然有用。

在考虑将列添加到索引作为包含列或将其添加到键时,您需要做出相同的决定。