在sql server中创建非聚集索引的max varchar长度是多少?

时间:2018-03-01 08:24:16

标签: sql-server maxlength non-clustered-index

non-clustered index中不允许在varchar(max)的列上创建 sql server

那么,可以varchar创建的最长non-clustered index长度是多少?

2 个答案:

答案 0 :(得分:3)

密钥列长度不应超过900字节,但使用sqlserver 2016 cu2,这是1700字节..

您可以包含所包含的最大列,但它们不应该是键列的一部分。

create table t1
(
col1 varchar(1700),
id varchar(max)
)

create index nc on t1(col1) 
include (id)

只需添加,从SQLServer 2012,您还可以重建LOB类型的索引列,但不支持text,ntext和image ..

雷木思·鲁萨努(Remus Rusanu)有一篇很好的博客,说明2012年早期版本不支持在线索引重建操作的原因。

进一步阅读:
varchar(max) everywhere?
Online Index Operations for indexes containing LOB columns

答案 1 :(得分:1)

非聚集索引(2016年之前)的最大字节数为900:

https://docs.microsoft.com/en-us/sql/sql-server/maximum-capacity-specifications-for-sql-server

所以,给VARCHAR(900)一个去,让我们知道你是怎么过的。