你好SQL Server引擎专家;请与我们分享一下您的见解......SQL Server性能:非聚簇索引+ INCLUDE列与聚簇索引 - 等效吗?
据我所知,非聚集索引上的INCLUDE列允许将其他非关键数据与索引页面一起存储。
我很清楚聚簇索引对非聚簇索引的性能好处,这是因为引擎在检索时必须采取的步骤少一步才能到达磁盘上的数据。
但是,由于INCLUDE列存在于非聚集索引中,因此可以预期以下查询在场景1和2中具有基本相同的性能,因为可以从场景2中的索引页中检索所有列,而不是诉诸表格数据页面?
QUERY
SELECT A, B, C FROM TBL ORDER BY A
方案1
CREATE CLUSTERED INDEX IX1 ON TBL (A, B, C);
方案2
CREATED NONCLUSTERED INDEX IX1 ON TBL (A) INCLUDE (B, C);
实际查询计划在切换索引设置时会说什么? – 2010-08-02 01:40:11
它将取决于查询该表的总体查询工作量。 – 2010-08-02 01:52:09
有趣的是,在查询计划中首选非聚集索引,但使用查询提示的可能性,引擎根据数据量决定最佳查询计划的复杂性以及谁知道其他因素对我而言是一个谜。我真的很想找人说出来,并说INCLUDE专栏不是因为某些原因或者其他原因而被破解的...... – Tahbaza 2010-08-02 01:54:30