[英]Workaround maximum key length for a nonclustered index in SQL Server
有没有办法增加 SQL 服务器中 1700 字节的非聚集索引的限制? 当我建立我的数据库时,我收到这个警告:
警告。 非聚集索引的最大键长度为 1700 字节。 索引 'CS_UK' 的最大长度为 8000 字节,用于一些大值的组合。 插入/更新操作将失败。
或者我是否必须更改索引的结构?
即使可能,您也应该考虑更改索引结构。 话虽如此,来自工程团队的博客:
SQL Server 2016 和 Azure SQL 数据库增加了具有非聚集索引的索引键的最大大小。 非聚集索引的新最大键大小为 1700 字节。 聚集索引的最大键大小仍为 900 字节。
在文章的最后他们补充说:
对于内存优化表:非聚集索引的最大索引键大小为 2500 字节; 哈希索引的索引键大小没有严格限制。
所以它可能是可能的。
一种解决方法是对创建索引时太大的列使用include
。
CREATE NONCLUSTERED INDEX IX_IndexSizeTest_Test3
ON IndexSizeTest (EMPName,EmpPhoneNumber,EmpPostCode) INCLUDE (EmpAddress)
当本示例中的 EmpAdress 是一个非常大的列时,我们可以使用INCLUDE(EmpAddress)
将其添加到索引中,因为当涉及到索引限制时,它不会被计算在内。 以下是有关它的更多详细信息。
您收到警告是因为您尝试索引的列非常大。 对于我们来说,我们意识到我们不需要那么大的列来建立索引,这也不是很好的性能。 所以,如果您实际上不需要那个尺寸,缩小柱子可以提供更多的结构和安全性。 我不再担心有人不小心往里面扔了太多东西,导致插入失败。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.