【发布时间】:2014-10-08 15:26:00
【问题描述】:
我的问题是例如我有以下几列
Cl1 int - primary key
Cl2 int
Cl3 nvarchar(200)
Cl4 nvarchar(max)
现在假设我在Cl2 上创建一个非聚集索引,但是当我查询Cl2 时,我总是同时检索Cl3 和Cl4。
在索引中包含Cl3 是合乎逻辑的,因为它会使检索操作更快,但是Cl4 是nvarchar(max) 并且可能非常大:此列包含已爬取的页面源
所以我的问题是:将Cl4 包含在非聚集索引中是否合乎逻辑
包括它会使Cl4 在硬盘驱动器上准确存储2 次?
非常感谢您的回答
SQL Server 2014
【问题讨论】:
-
是的,如果您将
CL4包含到您的非聚集索引中,那么CL4的值将存储在基本数据页面以及在非聚集索引的索引页面中。这是空间(您需要更多)和速度(如果您包含CL4,您应该会获得更好的速度)之间的经典权衡 - 选择其中一个 - 您不能同时拥有两者
标签: sql sql-server indexing sql-server-2014 non-clustered-index