Sql server 索引超过SQL Server中的最大长度
我正在犯错误。如何修复它?为什么我会犯这个错误 消息操作失败。索引ix_Emp_no_1的长度为1526字节的索引项超过了最大长度900字节Sql server 索引超过SQL Server中的最大长度,sql-server,indexing,Sql Server,Indexing,我正在犯错误。如何修复它?为什么我会犯这个错误 消息操作失败。索引ix_Emp_no_1的长度为1526字节的索引项超过了最大长度900字节 我从未见过这篇文章,但我发现这篇文章可能会帮助你处理你的情况。 听起来你有一个超过900字节的密钥,可能是一个大的文本字段。因此,您需要找到一种不同的方法来标识该行。尝试索引其他列并包含问题列。每个索引键的最大字节数 900字节用于聚集索引 1700表示非聚集索引 结果和意义: 如果您有一个nchar(450),因为Unicode字符占用2个字节,
我从未见过这篇文章,但我发现这篇文章可能会帮助你处理你的情况。
听起来你有一个超过900字节的密钥,可能是一个大的文本字段。因此,您需要找到一种不同的方法来标识该行。尝试索引其他列并包含问题列。每个索引键的最大字节数
- 900字节用于聚集索引
- 1700表示非聚集索引
- 如果您有一个nchar(450),因为Unicode字符占用2个字节,那么它将等于900个字节
- 您可以忽略Unicode而改用char(900)
- 对于变量字符串类型,如varchar和nvarchar,它似乎以相同的方式工作
- 如果您的复合键包含多个列,则它们的总和必须小于此限制
来源:直接来自文档。“在SQL Server中,聚集索引键中的最大字节数不能超过900。”因为索引ix_Emp_no_1的长度为1526字节的索引项超过了最大长度900字节。您试图放入索引中的所有列的组合可能最大长度不能超过900字节。显然,在你的情况下,就是这样。如何修复它??将越来越少的列放入索引添加表的脚本,并在脚本下面使用索引。创建表T_Index_Test(产品VARCHAR(50)NOT NULL,F_PHY_Name nvarchar(1000)NOT NULL约束PK_T_Index_Test主键(产品,F_PHY_Name))插入T_Index_Test选择“A0001”,将(复制('x',899)转换为VARCHAR(1000))非常感谢。