[英]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.