繁体   English   中英

将列添加到索引中的 INCLUDE 的效果

[英]Effects of adding columns to INCLUDE in an index

我有一个关于 EmpId 的索引。 我想在索引中包含几列。

Create Index IX_01_EmpId On empTable(EmpId) INCLUDE (name, dept, salary, joining_dt). 

我知道包含的列通过避免键查找来加速查询。 它们如何影响 Insert/Update/Delete 语句的性能? 当对表执行任何插入/更新/删除语句时,索引表的幕后会发生什么?

IMO,性能影响更多是在 SELECT 方面。

选择时,您可能会使用索引。 如果您执行许多显示这些列的查询,并且您已将它们包含在索引中,它将避免您所说的键查找。 这样做的代价是索引的每个页面(SQL 将所有内容存储在 8KB 页面中)现在包含更少的行,因为它们更大。 因此,使用索引的相同查询将花费更长的时间,因为它必须扫描(寻找)更多页面。 包含的列越多,这种效果就越强。

当您执行 INSERT/UPDATE/DELETE 时,SQL Server 必须维护此索引。 它将相应地修改页面数据。 我敢打赌,只要它必须从索引中插入/更新/删除一个“行”并触摸它的页面,它就不会产生太大的不同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM