在 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
在 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