簡體   English   中英

警告! 最大密鑰長度為 900 字節。 索引的最大長度為 8009 字節

[英]Warning! The maximum key length is 900 bytes. The index has maximum length of 8009 bytes

我有一個帶有基於 SHA1 hasbyte 的計算列的臨時變量。 當我在計算列上創建一個 UNIQUE 非聚集索引時,它會拋出警告::

警告! 最大密鑰長度為 900 字節。 索引 'UQ__#B445E45__954B055AC5951B75' 的最大長度為 8009 字節。 對於某些大值組合,插入/更新操作將失敗。

我記得讀取 SHA1 字節的輸出限制為大約 160 個字節。 我無法理解為什么會收到此警告。

如果通過以下查詢檢查計算列中涉及的所有列的最大長度,它加起來大約為 8148 個字節。 但是我認為對於我正在使用的哈希,我應該為計算列獲得不超過 160 個字節。

SELECT Sum(c.max_length)
FROM SYS.COLUMNS C INNER JOIN SYS.TABLES tb ON tb.[object_id] = C.  [object_id]
INNER JOIN SYS.TYPES T ON C.system_type_id = T.user_type_id
WHERE tb.[is_ms_shipped] = 0
and OBJECT_NAME(tb.object_id)='xyz'

請告知我在這里缺少什么。

我不是哈希專家:

但我建議你創建一個列combine varchar(750) (15*50)

然后使用SET combine = Col1+ Col2+ Col3+.. Col15更新該列

並嘗試:

CompSum AS HashBytes('SHA1', combine)

這樣你就使用了一個永遠不會大於 750 的字段

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM