TIDB_INDEXES
TIDB_INDEXESテーブルは、すべてのテーブルの INDEX 情報を提供します。
USE information_schema;
DESC tidb_indexes;
+---------------+---------------+------+------+---------+-------+
| Field         | Type          | Null | Key  | Default | Extra |
+---------------+---------------+------+------+---------+-------+
| TABLE_SCHEMA  | varchar(64)   | YES  |      | NULL    |       |
| TABLE_NAME    | varchar(64)   | YES  |      | NULL    |       |
| NON_UNIQUE    | bigint(21)    | YES  |      | NULL    |       |
| KEY_NAME      | varchar(64)   | YES  |      | NULL    |       |
| SEQ_IN_INDEX  | bigint(21)    | YES  |      | NULL    |       |
| COLUMN_NAME   | varchar(64)   | YES  |      | NULL    |       |
| SUB_PART      | bigint(21)    | YES  |      | NULL    |       |
| INDEX_COMMENT | varchar(2048) | YES  |      | NULL    |       |
| Expression    | varchar(64)   | YES  |      | NULL    |       |
| INDEX_ID      | bigint(21)    | YES  |      | NULL    |       |
| IS_VISIBLE    | varchar(64)   | YES  |      | NULL    |       |
| CLUSTERED     | varchar(64)   | YES  |      | NULL    |       |
+---------------+---------------+------+------+---------+-------+
12 rows in set (0.00 sec)
INDEX_IDは、TiDB が各インデックスに割り当てる一意の ID です。別のテーブルまたは API から取得したINDEX_IDの結合操作を行うために使用できます。
たとえば、 SLOW_QUERYテーブルの遅いクエリに関係するTABLE_IDとINDEX_IDを取得し、次の SQL ステートメントを使用して特定のインデックス情報を取得できます。
SELECT
 tidb_indexes.*
FROM
 tidb_indexes,
 tables
WHERE
  tidb_indexes.table_schema = tables.table_schema
 AND tidb_indexes.table_name = tidb_indexes.table_name
 AND tables.tidb_table_id = ?
 AND index_id = ?
TIDB_INDEXESテーブルのフィールドは次のように説明されています。
TABLE_SCHEMA: インデックスが属するスキーマの名前。TABLE_NAME: インデックスが属するテーブルの名前。NON_UNIQUE: インデックスが一意の場合、値は0です。それ以外の場合、値は1です。KEY_NAME: インデックス名。インデックスが主キーの場合、名前はPRIMARYです。SEQ_IN_INDEX:1から始まるインデックス内の列の連続番号。COLUMN_NAME: インデックスが配置されている列の名前。SUB_PART: インデックスのプレフィックス長。列が部分的にインデックス付けされている場合、値SUB_PARTはインデックス付けされた文字の数になります。それ以外の場合、値はNULLです。INDEX_COMMENT: インデックスのコメント。インデックスの作成時に作成されます。INDEX_ID: インデックス ID。IS_VISIBLE: インデックスが表示されるかどうか。CLUSTERED: クラスター化インデックスかどうか。