MySQL インデックスの長さ制限の原理の分析

MySQL インデックスの長さ制限の原理の分析

この記事は主に、MySQL インデックスの長さ制限の原理の分析を紹介します。サンプル コードを通じて詳細に紹介されており、皆さんの学習や仕事に一定の参考学習価値があります。困っている友人は参考にしてください。

索引

TextField はインデックスをサポートしていません。

MySQLにはインデックスフィールドの長さの制限がある

InnoDB エンジンの各インデックス列の長さは 767 バイトに制限されており、すべてのインデックス列の合計長は 3072 バイトを超えることはできません。

MyISAM エンジンの各インデックス列の長さは 1000 バイトに制限されており、すべてのインデックス列の合計長は 1000 バイトを超えることはできません。

varchar の最大長は文字の長さを指します。データベースの文字セットが utf-8 の場合、1 文字は 3 バイトを占めます。したがって、UTF-8 文字セットでは、InnoDB エンジンによって作成される単一列インデックスの長さは 255 文字を超えることはできません。

MySQLのバージョンによってインデックスの長さの制限が異なります

MySQL バージョン 5.5 では、大きなインデックス キー プレフィックスをサポートしない以前のバージョンの InnoDB との互換性を保つために、大きなプレフィックス インデックスを無効にする innodb_large_prefix が導入されました。

innodb_large_prefix を有効にすると、単一のインデックスの長さを 3072 バイトに制限できます (ただし、結合されたインデックスの合計の長さ制限は 3072 バイトのままです)。無効にすると、単一のインデックスの長さ制限は 767 バイトになります。

MySQL 5.5およびMySQL 5.6では、innodb_large_prefixはデフォルトで無効になっており、MySQL 5.7以降ではデフォルトで有効になっています。

MySQL 8.0では、innodb_large_prefixは削除されました。

このため、私のマシン(MySQL 8.0)では長さ 1024 文字(UTF8 文字セットでは 3072 バイト)のインデックスを作成できますが、サーバー(MySQL 5.5)では作成できません。

インデックスの長さ制限をテストするスクリプト:

使用テスト;
存在する場合はテーブルを削除します test_index_len;
テーブルを作成する 
test_index_len(long_char varchar(1025) 主キー) ENGINE=InnoDB charset=utf8;
使用テスト;
存在する場合はテーブルを削除します test_index_len;
テーブルを作成する 
テストインデックスの長さ(
  long_char varchar(24)、
  origin_str varchar(1000)、
  キー test_index(long_char, origin_str)) ENGINE=InnoDB charset=utf8;

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • MySQLインデックス構造の詳細な分析
  • MySQLインデックストランザクションの詳細な分析
  • MySQL インデックス データ構造の詳細な分析
  • MySQLインデックスの詳細な分析
  • MySQLインデックスの役割を分析する

<<:  Vue はボタンをクリックしてファイルをダウンロードする操作コードを実装します (バックエンド Java)

>>:  IIS7 IIS8 リバースプロキシルールの記述、インストール、構成方法

推薦する

HTML ウェブページのブラウザタイトルバーに小さなアイコンを表示する方法

この効果と同様に、方法も非常に簡単です。ヘッダーに次のように記述します: <link rel=...

初心者のためのMySQL外部キーの設定方法

目次外部キーの役割mysql 外部キー設定方法要約する外部キーの役割データの一貫性、整合性を維持し、...

WeChatアプレットを使用して天井効果を実現する方法の例

目次1. 実装2. 問題点3. より良い実装方法があるかどうか検討する要約する背景は日付のタイトルで...

calc() で全画面背景の固定幅コンテンツを実現

ここ数年、Web デザインには「全幅背景と固定幅コンテンツ」というトレンドが生まれています。このデザ...

ウェブページでグレーまたはブラックモードを実現するための CSS3 フィルターコード

フロントエンドcss3 フィルターは、Web ページのグレー効果を実現できるだけでなく、ナイト モー...

Javascript Bootstrapのグリッドシステム、ナビゲーションバー、カルーセルの詳細な説明

目次ブートストラップと関連コンテンツの紹介グリッドシステムネストされた列列オフセット列の並べ替えナビ...

MySQL の結合フィールドの Concat()

目次1. はじめに2. 本文2.1 フィールドの連結2.2 フィールドでの算術計算の実行1. はじめ...

Brotli圧縮アルゴリズムを有効にするNginxの実装プロセスの詳細な説明

序文Web アプリケーションでは、トラフィックを節約し、転送データのサイズを縮小し、転送効率を向上さ...

JavaScript JSON.stringify() の使用法の概要

目次1. 使用方法1. 基本的な使い方2. 2番目のパラメータ - フィルター3. 3番目のパラメー...

ミニマルなウェブサイトデザインの例

Web アプリケーション クラス1. みんなのためにダウンまたは私だけのためにこのウェブサイトは、ウ...

awk でのループの使用

同じコマンドを複数回実行するさまざまな種類のループについて学習しましょう。 awk スクリプトには、...

Bootstrap が人気な 11 の理由

序文最も人気のあるフロントエンド開発フレームワークである Bootstrap は、Web サイトの開...

ドロップダウンメニューを実装するためのネイティブ js

ドロップダウン メニューも実生活では非常に一般的です。実装に使用される js コードは、タブ選択やア...

CSS を使用して複数の方法で等高レイアウトを実装するサンプル コード

この記事で説明する等高レイアウトでは、純粋な CSS を使用して、要素の高さを手動で設定することなく...

HTML での Li タグの使用例

タイトルを左に、日付を右に揃えたいのですが、日付の範囲に float:right を直接追加すると、...