Sql server 2005 SQL Server索引
Windows Server 2008 R2上的SQL Server 2005 SP3 我运行了服务器端跟踪,并使用DTA(数据库引擎优化顾问) 在一个表上,DTA建议我使用集群键创建一个非集群索引。我的意思是,根据DTA,我需要创建一个复合的非聚集索引,并将显式的聚集索引键作为非聚集索引的一部分 我认为在叶级,非聚集索引已经包含了聚集键 MeasurementDataID是一个主键,上面有聚集索引Sql server 2005 SQL Server索引,sql-server-2005,Sql Server 2005,Windows Server 2008 R2上的SQL Server 2005 SP3 我运行了服务器端跟踪,并使用DTA(数据库引擎优化顾问) 在一个表上,DTA建议我使用集群键创建一个非集群索引。我的意思是,根据DTA,我需要创建一个复合的非聚集索引,并将显式的聚集索引键作为非聚集索引的一部分 我认为在叶级,非聚集索引已经包含了聚集键 MeasurementDataID是一个主键,上面有聚集索引 CREAT INDEX IX_NAME( [MeasurementID] ASC, [Sampl
CREAT INDEX IX_NAME(
[MeasurementID] ASC,
[SampleName] ASC,
[MeasurementDataID] ASC )
在叶级别,它确实包含集群键,因此您拥有的索引将覆盖查询 但是如果你的问题是
其中MeasurementID=1,SampleName='foo'和measurementdata=10
如果不包含MeasurementDataID
,它仍然需要扫描索引中与匹配的所有记录,其中MeasurementID=1和SampleName='foo'
部分,而不是通过搜索来满足整个问题,这取决于前两个的选择程度,它可能仍然有用
这与您在考虑将列作为包含列添加到索引或将其添加到键时需要做出的决定基本相同 我还是不清楚。。使用clustring键显式创建非集群索引可以吗?我以为SQL server会在幕后添加它。。如果索引体系结构是键值对,那么集群键是否作为键值(在叶级的非集群索引上)或作为值的一部分添加……它不会添加两次。如果它在键中,它将识别它,并且不会再次添加它,因此要么显式地将它添加到键中,要么让它隐式地将它添加到叶中。任何对您的查询最有意义的内容。