SQL Server 数据库索引的“包含列”是什么意思?

作者:vkvi 来源:ITPOW(原创) 日期:2021-12-8

索引中,有一项内容是“包含列”,这起什么作用呢?

假设表有 A、B、C 列,A 列是索引,没有包含列。

那么当使用索引 A 找到记录后,会有一个对应关系,去对应 B、C 的内容。

这个去对应 B、C 的内容就花时间了。

假如将 B、C 纳入“包含列”

就不用去对应了,就直接将在 A 的旁边,将 B、C 返回就是了。

优点

就是如上,少个对应关系,速度快。别说,在某些场景中,提高 80% 的效率不在话下。

缺点

当然是将索引搞大了呀,原来索引页光存 A,现在要存 A、B、C 了。

包含列和把 B、C 也纳入索引,有什么区别?

有区别的,如果不纳入索引,它仅仅是躺在 A 的旁边,A 怎么排序,它就怎么走。如果把 B、C 也纳入索引,它也参与排序了,它的值的变动,会影响其在索引页中的位置。

怎么设置“包含列”

可视化设计的话,就在下方有一个包含的列,多个使用逗号隔开。

语法是 include:INCLUDE([Field1],[Field1])

相关文章