繁体   English   中英

SQL Server包含的列是否占用双倍的空间?

[英]Do SQL Server included columns takes double space?

我的问题是例如我有以下专栏

Cl1 int - primary key
Cl2 int
Cl3 nvarchar(200)
Cl4 nvarchar(max)

现在假设我在Cl2上创建了一个非聚集索引,但是当我查询Cl2我总是也检索Cl3Cl4

Cl3包含在索引中是合乎逻辑的,因为它将使检索操作更快,但是Cl4nvarchar(max)并且可能很大:此列包含已爬网的页面源

所以我的问题是:在非聚集索引中是否包含Cl4是合乎逻辑的

包括它会使Cl4精确地存储在硬盘上2次吗?

非常感谢您的回答

SQL Server 2014

我将向您介绍这个答案该答案进一步说明了索引中包含的列。

简而言之,是的,如果在索引中包含该列,则使用的空间将更大,但是性能会更好。 这是你的选择。

从针对SQL Server 2014的联机丛书中获得:

Up to 16 columns can be combined into a single composite index key. All the columns in a composite index key must be in the same table or view. The maximum allowable size of the combined index values is 900 bytes.

Columns that are of the large object (LOB) data types ntext, text, varchar(max), nvarchar(max), varbinary(max), xml, or image cannot be specified as key columns for an index.

如您所料,包括C14可能会以磁盘空间为代价,对某些性能产生积极影响。 我想您也了解,受此影响的不仅是磁盘空间,还包括插入,更新和删除。 更改是否值得取决于您的系统。 我鼓励您对这两个选项进行真实的性能分析。 然后根据结果做出决定。

暂无
暂无

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

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