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 リバースプロキシルールの記述、インストール、構成方法

推薦する

React でカレンダー コンポーネントを構築するためのステップ バイ ステップ ガイド

目次事業背景テクノロジーの活用技術的な問題デザインのアイデア😱 困惑と苦痛に満ちた顔🙄考え始める🌲デ...

mysql data_dirの変更によって発生するエラー問題を解決する

今日は、新しく購入した Alibaba Cloud ECS 環境 (Ubuntu 16.04 LTS...

vue3を使用して人間と猫のコミュニケーションアプレットを実装する

目次序文プロジェクトを初期化するデザインコードの実装オンデマンドロードオーディオを再生録音長押しイベ...

dockerでrabbitmqをインストールすると管理ページに入れなくなる問題

1. 環境整備Tencent Cloud Server CENTOS 7 バージョンDockerコン...

Nginxポーリングアルゴリズムの基本的な実装方法の詳細な説明

ポーリングアルゴリズムの紹介多くの人が職場で nginx を使用しており、その設定に精通しています。...

nginx で第 3 レベルドメイン名を設定する方法の例

問題の説明nginx を設定することで、異なるポートを介して異なる Web アプリケーションにアクセ...

W3C チュートリアル (11): W3C DOM アクティビティ

ドキュメント オブジェクト モデル (DOM) は、プログラムがドキュメントのコンテンツ、構造、およ...

CSSの優先度を理解する2つの方法

方法1: 値を追加する公式の説明を見るには MDN にアクセスしてください。優先度はどのように計算さ...

Dockerモードで起動したTomcatのホームページにアクセスすると404エラーが発生する

シナリオ: docker で tomcat を起動すると (Alibaba Cloud からダウンロ...

将来的に人気のあるウェブサイトのナビゲーションの方向

<br />今は情報爆発の時代であるだけでなく、サービス爆発の時代でもあります。それはす...

MySQL データベースに基づくデータ制約の例と 5 つの整合性制約の紹介

非準拠データがデータベースに入るのを防ぐために、ユーザーがデータを挿入、変更、削除、その他の操作を行...

Linux システムで tcpdump を使用してパケットをキャプチャする方法

まずサンプルコードを見てみましょう: 1. 共通パラメータ tcpdump -i eth0 -nn ...

MySQLのバックアップとリカバリの簡単な分析

目次1. はじめに2. バックアップとリカバリの簡単な定義3. 復旧計画で考慮すべきいくつかの要素4...

Vue2.0は適応解像度を実装する

この記事では、適応解像度を実現するためのVue2.0の具体的なコードを参考までに紹介します。具体的な...