首頁 > 資料庫 > mysql教程 > 為什麼我的 MySQL 唯一索引太長,要如何修復?

為什麼我的 MySQL 唯一索引太長,要如何修復?

Mary-Kate Olsen
發布: 2024-12-13 15:43:10
原創
250 人瀏覽過

Why Is My MySQL Unique Index Too Long, and How Can I Fix It?

MySQL 鍵長度限制及其修正

嘗試在兩個VARCHAR 欄位上建立唯一索引時,使用者可能會遇到錯誤「 # 1071 - 指定的密鑰太長;最大密鑰長度為767 位元組」。此錯誤源自於 MySQL 對金鑰長度的限制。

了解金鑰長度限制

在 MySQL 5.6 及之前版本中,最大金鑰長度為 767 InnoDB 表的位元組數。此限制適用於唯一鍵內所有索引欄位的組合。對於 MyISAM 表,此限制為 1,000 位元組。

UTF-8 字元編碼因子

使用UTF-8 字元編碼(utf8mb4) 時,需要注意的是它最多使用四個位元組來表示單字。因此,對於 utf8mb4 編碼字段,767 位元組的最大索引前綴長度有效減少為 191 個字元。

可能的解決方案

  • 減少VARCHAR 欄位大小: 降低 VARCHAR 欄位的大小可以減少總鍵值長度。
  • 對索引進行分區: 建立要索引的列的子集,如範例所示:
ALTER TABLE `mytable` ADD UNIQUE ( column1(15), column2(200) );
登入後複製
  • 審查資料模型:審查資料模型以在不超出MySQL的情況下實現業務規則可能會有好處

在MySQL 5.7 版及更高版本中,最大金鑰長度已增加到3072 字節,在處理大金鑰時提供更大的靈活性。然而,考慮字元編碼因素和資料模型最佳化以避免密鑰長度錯誤仍然很重要。

以上是為什麼我的 MySQL 唯一索引太長,要如何修復?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板