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