在 sql 服务器中创建非聚集索引的最大 varchar 长度是多少?

What is the max varchar length for creating non-clustered index in sql server?

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

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

non-clustered 索引(2016 年之前)的最大字节数为 900:

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

那么,尝试一下 VARCHAR(900),让我们知道您的进展情况。

键列长度不应超过 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