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

Ram*_*Ram 5 sql-server indexing

我得到低于错误。如何解决?为什么我收到这个错误?

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

Ima*_*idi 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

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

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