MySQLインデックスの詳細

MySQLインデックスの詳細

1. インデックスの原則

インデックスは、列内の特定の値を持つ行をすばやく見つけるために使用されます。インデックスがない場合、MySQL は最初のレコードから開始し、関連する行が見つかるまでテーブル全体を読み取る必要があります。テーブルが大きいほど時間がかかります。順序付けられたフィールドにはバイナリ検索を適用できるため、パフォーマンスが大幅に向上します。 MYISAMとINNODBはどちらもインデックス構造としてB+Treeを使用しています。

(主キーと一意キーはデフォルトでインデックスを追加します)

2. インデックスを作成する

インデックスを使用しない場合、1500 を超える給与を照会するときにテーブル全体のスキャンが実行されます。

フィールドにインデックスを追加する必要があるのはいつですか?

- テーブル内のこのフィールドのデータ量は膨大です

- 頻繁に検索され、where句に頻繁に出現するフィールド

- DMLで頻繁に操作されるフィールドにインデックスを追加することは推奨されません。

索引は本の目次のようなものです。

主キーは自動的にインデックスを追加するため、主キーに基づいてクエリを実行する方が効率的です。

sal に基づいて頻繁にクエリを実行し、パフォーマンスのボトルネックが発生する場合は、まずプログラムにアルゴリズムの問​​題があるかどうかを確認し、次に sal のインデックス作成を検討してください。インデックスは次のように作成されます。

1. テーブル名(列名)に一意のインデックス インデックス名を作成します。

emp(ename) に一意のインデックス u_ename を作成します。

2. テーブルテーブル名を変更し、一意のインデックスインデックス名(列名)を追加します。

2. テーブルテーブル名を変更し、一意のインデックスインデックス名(列名)を追加します。 

3. インデックスを表示する

emp からインデックスを表示します。 

4. インデックスを使用する

select * を使用してはいけないことに注意してください... type!=all が表示され、インデックスが使用されていることがわかります

sal > 1500 の場合、emp から sal を選択します。

条件内のsalはインデックスを使用する

上記のように、sal が 1500 より大きいすべての行を検索する場合は、インデックスをスキャンできます。インデックスはソートされ、結果は 7 行になります。一致するレコードはもう存在しないことがわかっているので、終了できます。

インデックス テーブル内の中間ポイントより前に表示されない値を探している場合は、テーブルを順次スキャンせずに最初に一致するインデックス エントリを見つける位置アルゴリズム (バイナリ検索など) もあります。

この方法では、最初に一致する値をすばやく見つけることができるため、検索時間を大幅に節約できます。データベースはさまざまな手法を使用してインデックス値をすばやく見つけますが、これは通常 DBA の作業です。

5. インデックスを削除する

DROP INDEX index_name ON talbe_name

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

ALTER TABLE テーブル名 DROP PRIMARY KEY

最初の 2 つのステートメントは同等であり、table_name 内のインデックス index_name を削除します。

テーブルには PRIMARY KEY インデックスを 1 つしか持つことができないため、3 番目のステートメントは PRIMARY KEY インデックスを削除する場合にのみ使用されます。

mysql> ALTER TABLE EMP DROP INDEX test_index;

削除後、インデックスは使用されなくなり、クエリは完全なテーブルスキャンを実行します。

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

以下もご興味があるかもしれません:
  • MySQL インデックス作成方法、構文構造、および例
  • MySQLの複合インデックス方式の詳細な説明
  • MySQL インデックスの知識の要約
  • MySql ストレージ エンジンとインデックスに関する知識のまとめ
  • MySQL のインデックスの種類と基本的な使用例
  • MySQL 8の新機能である降順インデックスの基礎となる実装の詳細な説明
  • インデックスとテーブルリターンをカバーするMySQLの使い方
  • MySQL のインデックス障害の一般的なシナリオと回避方法
  • Mysql データベースの高度なビュー、トランザクション、インデックス、自己接続、ユーザー管理の例の分析の使用
  • MySQLインデックスの基本構文

<<:  JavaScriptイベント実行メカニズムの深い理解

>>:  Win10+Ubuntu 20.04 LTS デュアル システム インストール (UEFI + GPT) (画像とテキスト、複数の画像には注意)

推薦する

マージンのマージの問題を解決する

1. 兄弟要素の余白を結合する効果は次のようになります: (2 つの間の間隔は 150 ピクセルでは...

Centos7.5 は mysql5.7.24 バイナリ パッケージの展開をインストールします

1. 環境整備:オペレーティング システム: CentOS Linux リリース 7.5.1804 ...

Linux の GRUB ブート プログラムの暗号化の概要

目次1. GRUB暗号化とは何か2. grub暗号化手順3. grub暗号化のロック属性1. GRU...

Dockerコンテナのインポ​​ートとエクスポートに関するチュートリアル

背景Docker の人気は、コンテナの共有と移植が容易であることと密接に関係しています。ユーザーは、...

Vue3とVue2の利点のまとめ

目次1. なぜ vue3 が必要なのでしょうか? 2. vue3の利点3. 応答原則の違い4. ライ...

VMware 仮想マシンで HTTP サービスを確立して分析する手順

1. xshell を使用して仮想マシンに接続するか、仮想マシンに直接コマンドを入力します。以下はx...

MySQLデータベースのパスワードを忘れた場合の解決策

先ほど MySQL パスワードを設定したのに、外食したり荷物を受け取ったりするときにパスワードを忘れ...

Vue で jsx 構文を正しく使用する方法

目次序文仮想DOM仮想DOMとは仮想DOMの利点レンダリング関数とは何ですか? jsx Vue3 で...

CMD で MySQL データベースを操作するときに中国語の文字化けが発生する問題の解決方法

Baiduで検索しました。 。 chcp コマンドを使用して、cmd の文字エンコーディングを 65...

JavaScriptは4桁のランダム検証コードの生成を実装します

この記事の例では、JavaScriptで4桁のランダムな検証コードを生成する具体的なコードを参考まで...

WEBAPP開発スキルのまとめ(モバイルWebサイト開発の注意点)

1. レスポンシブな Web を開発するには、ページを画面サイズに適応させる必要があります。前の記...

Docker での MySQL 8.0.20 のインストールと設定のチュートリアル

Dockerは参考までにMySQLバージョン8.0.20をインストールします。具体的な内容は以下のと...

MySql インデックスの詳細な紹介と正しい使用方法

MySql インデックスの詳細な紹介と正しい使用方法1. はじめに:インデックスはクエリ速度に重大な...

MySQL での coalesce() の使用に関するヒントのまとめ

序文最近、偶然 MySQL の coalesce を発見しました。ちょうど時間があったので、MySQ...

Matlab による JavaScript プログラミング、重心アルゴリズムによる位置決め学習

目次Matlab セントロイドアルゴリズムMatlab はクローズドな商用ソフトウェアであり、米国政...