MySQLインデックスの基本構文

MySQLインデックスの基本構文

インデックスはソートされたデータ構造です。 where 条件での検索や order by 条件での並べ替えに使用できるフィールドは、データの物理アドレスをインデックス化することで、すばやく検索できます。

インデックス分類

1. 通常のインデックス: 制約なし。主にクエリの効率を向上させるために使用されます。

2. ユニークインデックス(UNIQUE):通常のインデックスに基づいてデータの一意性制約を追加します。複数のインデックスが存在する場合があります。

3. 主キーインデックス:主キーインデックスは、ユニークインデックスに基づいて非NULL制約を追加します。つまり、NOT NULL+UNIQUEであり、1つしか存在できません。

4. 全文インデックス (FULLTEXT): MySQL の組み込み全文インデックスは英語のみをサポートします。

一般的には、ES(ElasticSearch)などの専用の全文検索エンジンが使用される。

インデックスを作成

#通常のインデックス

ALTER TABLE テーブル名 ADD INDEX インデックス名 (column_list);

#ユニークインデックス

ALTER TABLE テーブル名 ADD UNIQUE インデックス名 (column_list);

#主キーインデックス

ALTER TABLE テーブル名 ADD PRIMARY KEY インデックス名 (column_list);

#全文インデックス(文字列データ型)

ALTER TABLE テーブル名 ADD フルテキスト インデックス名 (column_list);  

#インデックスを表示

学生からのインデックスを表示 \G

ここでは、セミコロン終端文字の代わりに \G が使用され、出力データ情報がフォーマットされます。

#インデックスを削除

テーブルを変更してインデックスを削除します

ALTER TABLE テーブル名 DROP INDEX インデックス名;

主キーインデックスを削除する

ALTER TABLE テーブル名 DROP PRIMARY KEY;

インデックス列が 1 列の場合、それは単一のインデックスです。
複数の列を組み合わせて作成されたインデックスを結合インデックスと呼びます。

どのような状況でインデックスを作成できますか?

1. フィールドの値には、idなどの一意性の制約があります。

2. 特にデータテーブルが大きい場合にWHEREクエリ条件として頻繁に使用されるフィールド

データ量が非常に多い場合、WHERE 条件フィルタリングがないのはひどいことです。

3. GROUP BYとORDER BYを頻繁に実行する必要がある列

4. UPDATEとDELETEのWHERE条件列も通常はインデックスを作成する必要がある

その理由は、まず WHERE 条件列に基づいてレコードを取得し、その後更新または削除する必要があるためです。非インデックス フィールドでデータを更新すると、その効果はより明白になります。

インデックスが多すぎると、データの更新時にインデックスの更新が発生する場合に負担がかかります。

5.DISTINCTフィールドにはインデックスを作成する必要がある

6. 複数テーブルのJOIN操作を実行する場合、インデックスを作成するときに次の原則に注意する必要があります。

接続するテーブルの数は 3 を超えてはなりません。テーブルを追加するたびにネストされたループが追加され、桁数が急速に増加します。接続に使用するフィールドにインデックスを作成し、複数のテーブル内のフィールドの型が一貫している必要があります。

インデックスを作成する必要がないのはいつですか?

インデックスの価値は、フィールドをすばやく見つけることです。フィールドが見つからない場合は、通常、インデックスを作成する必要はありません。

1. WHERE 条件 (GROUP BY および ORDER BY を含む) で使用されないフィールドにはインデックスを作成する必要はありません。

2. テーブルのレコード数が少なすぎる場合 (たとえば、1,000 行未満) は、インデックスを作成する必要はありません。

3. フィールドに大量の重複データがある場合、性別フィールドなどのインデックスを作成する必要はありません。

4. 頻繁に更新されるフィールドには、必ずしもインデックスを作成する必要はありません。データを更新する際には、インデックスも更新する必要があるためです。インデックスが多すぎると、インデックス更新時に負担がかかり、効率に影響します。

どのような状況でインデックスが失敗するのでしょうか?

1. インデックス列を式の計算や関数に使用すると失敗します。

2. WHERE 句で、OR の前の条件列にインデックスが付けられているが、OR の後の条件列にインデックスが付けられていない場合、インデックスは無効になります。

3. あいまいクエリにLIKEを使用する場合、式は%で始まることはできません。

4. インデックス列をNOT NULL制約に設定してみる

インデックス列が NOT NULL かどうかを判断するには、多くの場合、テーブル全体のスキャンが必要です。したがって、データ テーブルを設計するときに、フィールドに NOT NULL 制約を設定するのが最適です。たとえば、INT 型フィールドの既定値を 0 に設定できます。文字タイプのデフォルト値を空の文字列 ('') に設定します。

上記はMySQLインデックスの基本構文の詳細な内容です。MySQLインデックス構文の詳細については、123WORDPRESS.COMの他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • MySql インデックスはクエリ速度を向上させる一般的な方法のコード例
  • MySQL インデックスが失敗するいくつかの状況の概要
  • MySQLのクラスタ化インデックスと非クラスタ化インデックスの詳細な説明
  • MySQL インデックスのパフォーマンス最適化の問題に対する解決策
  • MySQL インデックスの失敗を引き起こす一般的な書き込み方法の概要
  • さまざまな種類のMySQLインデックス
  • MySQL パフォーマンスの最適化: インデックスを効率的かつ正しく使用する方法
  • MySQLの複合インデックス方式の詳細な説明
  • MySQLが間違ったインデックスを選択する理由と解決策

<<:  nginx の default_server 定義とマッチングルールの詳細な説明

>>:  JavaScript配列重複排除の詳細な説明

推薦する

バックエンドから返される 100,000 個のデータをフロントエンドでより適切に表示するにはどうすればよいですか?

目次予備作業バックエンド構築フロントエンドページダイレクトレンダリングsetTimeout ページン...

CSSブレンドモードとSVGを使用して、製品画像の色を動的に変更します。

数日前、Codepen で @Kyle Wetton が書いた、CSS ブレンディング モードと S...

js は複数の画像を zip にパッケージ化します

目次1. ファイルをインポートする2. HTMLページ3. メインコード4. 画像をbase64に変...

JS 日付コントロール My97DatePicker の基本的な使い方

My97DatePicker は非常に柔軟で使いやすい日付コントロールです。使い方はとても簡単です。...

Vue 天気予報入門

この記事では、参考までに天気予報を実装するためのVueの具体的なコードを紹介します。具体的な内容は次...

Linux で複数のファイルの名前を一度に変更する方法

序文日常業務では、すべての jpg ファイルを bnp に変更したり、名前の 1 を one に変更...

MySQL エラー: ロックを取得しようとしたときにデッドロックが見つかりました。トランザクションの解決策を再起動してください

問題を見つける最近、以前のデータを入力していたときに、プログラムが突然次のエラーを報告しました。 [...

あなたのウェブサイトはIE8に適していますか?

オリンピック期間中にIE8ベータ2がリリースされ、英語版のリリースに合わせて中国語版も第一波でリリー...

HTML チュートリアル: よく使われる HTML タグのコレクション (6)

関連記事:初心者が学ぶ HTML タグ (5)導入された HTML タグは、必ずしも XHTML 仕...

JavaScriptの基礎を学ぶ

目次1. JavaScriptを記述する場所2. JavaScriptでよく使われる入力文と出力文1...

mysql5.7 でユーザーの初期パスワードを変更する方法

ユーザーが初めて MySQL データベースをインストールするとき、初期のルート パスワードを変更する...

MySQLチュートリアルDMLデータ操作言語の例の詳細な説明

目次1. データ操作言語 (DML) 2. データを追加する(挿入) 3. 既存のテーブルをコピーし...

MySQL SQL 最適化チュートリアル: IN クエリと RANGE クエリ

まず、in() クエリについて説明します。 「High Performance MySQL」では、イ...

TypeScript マッピング型の詳細

目次1. マップされた型2. マッピング修飾子3. キーの再マッピング4. さらなる探究序文: Ty...

MySQL テーブルにはどのくらいの量のデータを保存できますか?

プログラマーは MySQL を扱う機会が多く、毎日触れているとも言えますが、MySQL テーブルには...