テーブルに設定されているインデックス

MySQLにおいて表題の件。昨日の続きである。

■ 環境

  • MySQL 5.64

■ データサイズ

テーブルはやはり下記で良い気がする。

data_length + index_length

となると気になるのは、”index_length“が必要以上に大きいものか。ひとつのインデックスが大きいのか、単にいくつものインデックスが設定されているからなのか、を確認したい。

■ show index

下記でテーブルに設定されているインデックスの一覧を確認可能である。

show index from [table_name];

試しに実行してみると下記のように得られた。

mysql> show index from test1;
+-------+------------+---------------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table | Non_unique | Key_name                  | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+-------+------------+---------------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| test1 |          0 | PRIMARY                   |            1 | id          | A         |        2801 |     NULL | NULL   |      | BTREE      |         |               |
| test1 |          1 | index_XXXXX_on_XXXXXXXXXX |            1 | XXXXXXXXXX  | A         |         700 |     NULL | NULL   | YES  | BTREE      |         |               |
+-------+------------+---------------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
2 rows in set (0.01 sec)

mysql>

Cardinality“の数が高い方がインデックスとしては有効なんだろうな、とイメージしている。本当にそうであろうか…。ちょっとしっかり考えよう。

以上。

■ 関連

データベースサイズの概算

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください