0

我的问题是例如我有以下列

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

现在假设我正在创建一个非聚集索引,Cl2但是当我查询时,Cl2我总是检索Cl3并且Cl4也。

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

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

包括它会Cl4在硬盘上准确存储 2 次?

非常感谢您的回答

SQL Server 2014

4

3 回答 3

2

我将向您推荐这个答案,该答案解释了有关索引中包含的列的更多信息。

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

于 2014-08-14T20:48:10.427 回答
2

来自 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.
于 2014-08-14T21:56:16.503 回答
1

正如您所推测的那样,包括 C14 可能会对选择性能产生积极影响,但会以磁盘空间为代价。我想您也明白,受此影响的不仅仅是磁盘空间,还有插入、更新和删除。更改是否值得将取决于您的系统。我鼓励你做一些真正的性能分析......这两种选择。然后根据结果做出决定。

于 2014-08-14T21:32:02.567 回答