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

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

Patricia Arquette
リリース: 2025-01-02 22:57:38
オリジナル
197 人が閲覧しました

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

MySQL インデックスの長さの制約について

質問で提供されているコマンドを実行すると、インデックス キーが長すぎるためにエラーが発生します。長さ。 MySQL で許可されるキーの最大長は 1000 バイトです。

エラーの原因

エラーは、'acts_as_taggable_on' gem の移行試行におけるインデックス定義が原因で発生します。 taggable_id、taggable_type、context の 3 つのフィールドを持つインデックスを作成します。これらのフィールドの組み合わせは 1000 バイトの制限を超えています。

解決策

エラーを解決するには、次の点を理解する必要があります:

  • MySQL ストレージ エンジン: MySQL は、それぞれ異なるインデックスを持つ異なるストレージ エンジンを使用します。制限。 MyISAM には 1000 バイトの制限があり、InnoDB には 767 バイトの制限があります。
  • データ型の影響: インデックス付き列のデータ型はインデックス サイズに影響します。 VARCHAR 列の場合、インデックスの実際のサイズは、宣言された列のサイズの 3 倍になります。したがって、VARCHAR(100) 列のインデックスは 300 バイトを消費します。
  • 部分インデックス: インデックスの長さの制約を克服するために、部分インデックスを作成できます。部分インデックスは、インデックスをデータ型の一部に制限します。

例:

'your_column の最初の 50 文字のみにインデックスを作成するには' 列では、次の構文を使用できます。使用:

CREATE INDEX example_idx ON YOUR_TABLE(your_column(50))
ログイン後にコピー

注:

  • 部分インデックスは、指定された部分を超える検索に対するインデックスの有効性を制限します。
  • 質問で言及されている特定のケースでは、インデックスの長さ制限がより緩和された別のデータベースの使用を検討することをお勧めします。 PostgreSQL.

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

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