SQL Server 中的索引超过了最大长度

7

我遇到了以下错误。如何解决?为什么会出现这个错误?

消息操作失败。索引 ix_Emp_no_1 的长度为 1526 字节的索引条目超过了最大长度 900 字节。


2
直接从文档中获取。https://learn.microsoft.com/en-us/sql/sql-server/maximum-capacity-specifications-for-sql-server “在SQL Server中,聚集索引键中的最大字节数不能超过900个。” - Sean Lange
1
由于索引 ix_Emp_no_1 的长度为1526字节的索引条目超过了最大长度900字节。 - Ken White
你尝试放入索引的所有列的最大长度总和不能超过900字节。显然,在你的情况下,确实如此。如何解决??将较少且较小的列放入索引中。 - marc_s
请添加您的表和索引的脚本。 - Krismorte
我使用了以下脚本。 创建表T_Index_Test(PRODUCT VARCHAR(50) NOT NULL, F_PHY_Name nvarchar(1000) not null CONSTRAINT PK_T_INDEX_TEST PRIMARY KEY(PRODUCT,F_PHY_NAME)) 插入到T_Index_Test中选择 'A0001',将replicate('x', 899)转换为varchar(1000)。 - Ram
2个回答

6

索引键的最大字节数

  • 聚集索引为900个字节。
  • 非聚集索引为1,700个字节。

结果和含义:

  • 如果您使用nchar(450),由于Unicode字符占用2个字节,因此它将等于900个字节。
  • 您可以忽略Unicode并改用char(900)。
  • 对于可变字符串类型,如varchar和nvarchar,似乎工作方式相同。
  • 如果您有包含多个列的复合键,则它们所有列的总和字节数必须低于此限制。

注意:有时SSMS设计器不允许您创建超过900个字节(至1700个字节)的索引,但它是官方支持的。您只需要生成脚本并自行运行它。

来源:https://learn.microsoft.com/en-us/sql/sql-server/maximum-capacity-specifications-for-sql-server?view=sql-server-2017


3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接