[英]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.