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

时间:2018-02-02 17:27:26

标签: sql-server indexing

我收到以下错误。怎么解决?为什么我会收到此错误?

  

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

2 个答案:

答案 0 :(得分:2)

每个索引键的最大字节数

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

结果和意义:

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

注意:有时SSMS设计器不允许您创建大于900字节(至1700字节)的索引,但该索引受到官方支持。您只需要生成脚本并自己运行即可。

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

答案 1 :(得分:0)

我从未见过这个,但我发现这篇文章可以帮助你处理你的情况。 https://blogs.msdn.microsoft.com/bartd/2011/01/06/living-with-sqls-900-byte-index-key-length-limit/

听起来你有一个超过900字节的密钥,可能是一个很大的文本字段。所以你需要找到一种不同的方法来识别那一行。尝试索引不同的列并包含问题列。