HOWTO · MySQL

MySQL のテーブルまたはデータベースのインデックスを表示

このチュートリアルでは、MySQL でテーブルまたはデータベースのインデックスを表示する方法を示します。

今日の記事では、MySQL でテーブルまたはデータベースのインデックスを表示する方法について説明します。 データベースまたはすべてのデータベース内の 1つまたは複数のテーブルからインデックスを取得する方法を学習します。

SHOW INDEXESSHOW EXTENDED INDEXSELECT DISTINCT コマンド、STATISTICS テーブルを使用してインデックスを取得します。

MySQL のインデックスとは

データベース アクティビティのパフォーマンスを向上させるために使用できる B ツリー である可能性が最も高いデータベース構造は、インデックスと呼ばれます。 データベース内のテーブルは、その特定のテーブルに関連付けられた 1つまたは複数のインデックスを持つことができます。

インデックスは複数の列から必要なデータを取得し、MySQL クエリの効率を高めます。 指定された MySQL クエリは、テーブルの各行 (レコード) を検査して、MySQL でのインデックス作成を省略した場合、対象のデータを取得します。

一意のキーまたは主キーを持つテーブルを作成するたびに、クラスター化インデックス と呼ばれる PRIMARY という名前のフィールド式を使用して、特別なインデックスが自動的に作成されます。

PRIMARY を除くすべてのインデックスはセカンダリ インデックスです。 非クラスター化インデックスと呼ぶことができます。

たとえば、students テーブルがあり、ID 列にインデックスが作成されているとします。 ここで、インデックスにはテーブル内の学生の ID 値のソートされたリストが含まれます。リストのすべての値には、その値を持つそれぞれのテーブル内のレコード (ここでは students) への参照が伴います。

以下は、インデックスが何であるかのデモンストレーションです。

mysql でテーブルまたはデータベースのインデックスを表示 - インデックスのデモ

MySQL におけるインデックスの重要性

次の 2つのビジュアル プレゼンテーションを見て、次のクエリを使用して、インデックス付きテーブルとインデックスなしテーブルがどのように検索されるかを観察してみましょう。

SELECT * FROM students WHERE Gender = 'Male'

索引付けされていない表の検索:

mysql でテーブルまたはデータベースのインデックスを表示 - インデックスのないテーブルを検索

インデックス付きテーブルの検索:

mysql でテーブルまたはデータベースのインデックスを表示 - インデックス付きテーブルを検索

ご覧のとおり、インデックスは、テーブル内のすべての行をさまようのではなく、対象のデータのみを取得するのに役立ちます.

SHOW INDEXES を使用して、MySQL のテーブルまたはデータベースのすべてのインデックスを一覧表示する

次のクエリを使用して、特定のテーブルまたは MySQL データベースからインデックスのリストを取得できます。

テーブルのインデックスを表示:

SHOW INDEXES FROM tableName;

上記のクエリは、use databaseName; を介して使用する現在のデータベース内の指定されたテーブルのすべてのインデックスを一覧表示します。 クエリ。

データベースを使用していない場合は、次のクエリを使用して、テーブルのすべてのインデックスを取得できます。

SHOW INDEX FROM tableName FROM databaseName;

または、次の方法で使用することもできます。

SHOW INDEXES FROM tableName IN databaseName;

KEYSINDEXINDEXES の同義語であることを思い出してください。 同様に、INFROM の同義語です。 したがって、SHOW INDEXES でこれらの同義語を使用できます。

# The queries below can be used alternatively,
# and produce the same results.
SHOW INDEXES FROM tableName IN databaseName;
SHOW INDEX IN tableName FROM databaseName;

また

# The queries given below can be used alternatively,
# and produce the same results.
SHOW INDEXES FROM tableName IN databaseName;
SHOW KEYS FROM tableName IN databaseName;

データベース開発者として作成したテーブルからインデックスのリストを取得するさまざまな方法を学びました。 次のクエリを使用して、データベース開発者とデータベース自体によって作成されたすべてのインデックスを取得できます。

SHOW EXTENDED INDEX from databaseName.tableName;

SELECT DISTINCT を使用して、MySQL のスキーマ (データベース) からすべてのテーブルのすべてのインデックスを一覧表示する

次のクエリを使用して、特定のデータベースからすべてのテーブルのすべてのインデックスのリストを取得できます。 INFORMATION_SCHEMASTATISTICS テーブルを使用できます。

特定のスキーマ内のすべてのテーブルのすべてのインデックスを一覧表示します。

# In the following query, you don't have to change anything except
# the value of `TABLE_SCHEMA` to get the table name accompanied
# with all indexes in that table.
SELECT DISTINCT
    TABLE_NAME,
    INDEX_NAME
FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = 'your_schema_name';

STATISTICS テーブルを使用して、MySQL のすべてのスキーマ (データベース) からすべてのテーブルのすべてのインデックスを一覧表示する

次のクエリを使用して、スキーマ (データベースとも呼ばれます) からすべてのテーブルのすべてのインデックスにアクセスできます。

USE INFORMATION_SCHEMA;
SELECT * FROM STATISTICS;