SQL Server包含非聚集索引中的列

时间:2018-07-19 13:17:26

标签: sql-server indexing

我有一个表,该表中约有30列,正在运行选择查询,正在执行计划中进行键查找,该表中约有200万条记录。在include子句中包含30列是一种好习惯?还是有解决问题的方法?我知道包括列将数据存储在叶级节点中以满足查询。那900字节是多少?这是否意味着所有包含列的长度都不应超过900个字符?

1 个答案:

答案 0 :(得分:0)

使用前导键作为查询的主要谓词并包括所有其他列来创建索引将加快查询速度,并用索引查找替换键查找。但是又大,但是您随后将数据以不同的顺序存储两次,因此100MB表变成200MB表。如果这是您应用程序中最重要的查询,那么您也许可以证明这一点。

布伦特·奥扎(Brent Ozar)的一般经验法则是“ 5合5”。每个表的索引不超过5个,列不超过5个。我说一般是因为显然在某些情况下这并不适用。

如果需要全部30列,则执行计划中的键查找将是最佳选择,在主谓词上具有索引,并让SQL Server在索引上使用隐藏的PK来对另一个键进行键查找列。

如果索引上一行的最大大小为900个字节,那么这将取决于表中所有列的数据类型

相关问题