ホームページ > データベース > mysql チュートリアル > MySQL の一意のインデックスが長すぎるのはなぜですか?どうすれば修正できますか?

MySQL の一意のインデックスが長すぎるのはなぜですか?どうすれば修正できますか?

Mary-Kate Olsen
リリース: 2024-12-13 15:43:10
オリジナル
249 人が閲覧しました

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

MySQL キーの長さの制限とその修正

2 つの VARCHAR カラムに一意のインデックスを作成しようとすると、エラー「#」が発生する場合があります1071 - 指定されたキーが長すぎます。最大キー長は 767 バイトです。」このエラーは、MySQL のキーの長さの制限に起因します。

キーの長さの制限について

MySQL バージョン 5.6 以前では、キーの最大長は 767 です。 InnoDB テーブルのバイト。この制限は、一意のキー内のすべてのインデックス付きフィールドの組み合わせに適用されます。 MyISAM テーブルの場合、この制限は 1,000 バイトです。

UTF-8 文字エンコーディング係数

UTF-8 文字エンコーディング (utf8mb4) を使用する場合は、次の点に注意することが重要です。 1 つの文字を表すのに最大 4 バイトを使用します。その結果、utf8mb4 でエンコードされたフィールドでは、インデックス プレフィックスの最大長 767 バイトが実質的に 191 文字に削減されます。

考えられる解決策

  • 削減VARCHAR フィールドのサイズ: VARCHAR フィールドのサイズを小さくすると、サイズを小さくできる可能性がありますキーの合計長。
  • インデックスを分割します: 例に示すように、インデックスを作成する列のサブセットを作成します:
ALTER TABLE `mytable` ADD UNIQUE ( column1(15), column2(200) );
ログイン後にコピー
  • データ モデルの確認: MySQL の制限を超えずにビジネス ルールを実装するには、データ モデルを確認すると有益な場合があります。

MySQL バージョン 5.7 以降では、最大キー長が 3072 バイトに増加され、大きなキーを処理する際の柔軟性が向上しました。ただし、キーの長さのエラーを避けるために、文字エンコード要素とデータ モデルの最適化を考慮することが依然として重要です。

以上がMySQL の一意のインデックスが長すぎるのはなぜですか?どうすれば修正できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート