繁体   English   中英

SQL Server如何处理非聚集索引中的包含列?

[英]How does SQL Server treat Included columns in a nonclustered index?

我有个问题:

非聚集索引的定义表示索引中包含的列在索引大小或最大列数方面不会被数据库引擎计数。

那他们的工作方式究竟是什么呢?

当索引大小不起作用时,它们如何对SQL Server提供帮助?

需要注意的重要一点是,数据库引擎在确定索引键中的列大小或数量(用于实际在索引结构中查找数据的值)时不会对包含的列进行计数。 它们仍然会增加索引本身的大小。

在构成密钥的所有列上,索引键的大小只允许为900字节(组成索引键的列只能有16列)。

添加包含的列不会计入900字节/ 16列的限制,但是可以通过覆盖更多查询来使索引更有用。

这里其他人的好解释。

对我而言,包含的索引列很容易记住,并可以通过以下简单规则使用:过滤器,即。 WHERE x = y等.. ,是你的关键,是否使用索引的决定是基于那些。 SELECT a,b,x是您实际返回的值,这些是您希望包含在索引中的值,因此SQL Server不必搜索聚簇索引/堆来查找它们。

例:

CREATE NONCLUSTERED INDEX TABLEX_A_IDX ON TABLEX (A) INCLUDE (B, C)    

SELECT A, B, C -- KEY + INCLUDED columns
FROM TABLEX WHERE A = 'ASD' -- KEY columns

当然,这不是您的问题,但这可能会有所帮助。

暂无
暂无

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

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