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 )
答案 0 :(得分:0)
在叶级别,它确实包含了聚类键,因此您拥有的索引将覆盖查询。
但如果您的查询是
WHERE MeasurementID = 1 AND SampleName = 'foo' AND MeasurementDataID=10
如果不包含MeasurementDataID
,它仍然需要扫描与WHERE MeasurementID = 1 AND SampleName = 'foo'
部分匹配的索引中的所有记录,而不是用搜索来满足整个事物,这取决于前两个是如何选择性的可能仍然有用。
在考虑将列添加到索引作为包含列或将其添加到键时,您需要做出相同的决定。