MySQL のテーブルまたはデータベースのインデックスを表示
- MySQL のインデックスとは
- MySQL におけるインデックスの重要性
-
SHOW INDEXES
を使用して、MySQL のテーブルまたはデータベースのすべてのインデックスを一覧表示する -
SELECT DISTINCT
を使用して、MySQL のスキーマ (データベース) からすべてのテーブルのすべてのインデックスを一覧表示する -
STATISTICS
テーブルを使用して、MySQL のすべてのスキーマ (データベース) からすべてのテーブルのすべてのインデックスを一覧表示する
今日の記事では、MySQL でテーブルまたはデータベースのインデックスを表示する方法について説明します。 データベースまたはすべてのデータベース内の 1つまたは複数のテーブルからインデックスを取得する方法を学習します。
SHOW INDEXES
、SHOW EXTENDED INDEX
、SELECT DISTINCT
コマンド、STATISTICS
テーブルを使用してインデックスを取得します。
MySQL のインデックスとは
データベース アクティビティのパフォーマンスを向上させるために使用できる B ツリー である可能性が最も高いデータベース構造は、インデックスと呼ばれます。 データベース内のテーブルは、その特定のテーブルに関連付けられた 1つまたは複数のインデックスを持つことができます。
インデックスは複数の列から必要なデータを取得し、MySQL クエリの効率を高めます。 指定された MySQL クエリは、テーブルの各行 (レコード) を検査して、MySQL でのインデックス作成を省略した場合、対象のデータを取得します。
一意のキーまたは主キーを持つテーブルを作成するたびに、クラスター化インデックス と呼ばれる PRIMARY
という名前のフィールド式を使用して、特別なインデックスが自動的に作成されます。
PRIMARY
を除くすべてのインデックスはセカンダリ インデックスです。 非クラスター化インデックスと呼ぶことができます。
たとえば、students
テーブルがあり、ID
列にインデックスが作成されているとします。 ここで、インデックスにはテーブル内の学生の ID 値のソートされたリストが含まれます。リストのすべての値には、その値を持つそれぞれのテーブル内のレコード (ここでは students
) への参照が伴います。
以下は、インデックスが何であるかのデモンストレーションです。
MySQL におけるインデックスの重要性
次の 2つのビジュアル プレゼンテーションを見て、次のクエリを使用して、インデックス付きテーブルとインデックスなしテーブルがどのように検索されるかを観察してみましょう。
SELECT * FROM students WHERE Gender = 'Male'
索引付けされていない表の検索:
インデックス付きテーブルの検索:
ご覧のとおり、インデックスは、テーブル内のすべての行をさまようのではなく、対象のデータのみを取得するのに役立ちます.
SHOW INDEXES
を使用して、MySQL のテーブルまたはデータベースのすべてのインデックスを一覧表示する
次のクエリを使用して、特定のテーブルまたは MySQL データベースからインデックスのリストを取得できます。
テーブルのインデックスを表示:
SHOW INDEXES FROM tableName;
上記のクエリは、use databaseName;
を介して使用する現在のデータベース内の指定されたテーブルのすべてのインデックスを一覧表示します。 クエリ。
データベースを使用していない場合は、次のクエリを使用して、テーブルのすべてのインデックスを取得できます。
SHOW INDEX FROM tableName FROM databaseName;
または、次の方法で使用することもできます。
SHOW INDEXES FROM tableName IN databaseName;
KEYS
と INDEX
は INDEXES
の同義語であることを思い出してください。 同様に、IN
は FROM
の同義語です。 したがって、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_SCHEMA
で STATISTICS
テーブルを使用できます。
特定のスキーマ内のすべてのテーブルのすべてのインデックスを一覧表示します。
# 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;