[MySQL]innoDBエンジンのプライマリ・キーとクラスタ・インデックス
1204 ワード
mysqlのinnodbエンジン自体が格納する形式は、クラスタインデックスの形式でなければなりません.ディスクにツリー状に格納されていますが、必ずしもプライマリ・キーに基づいてクラスタ化されているわけではありません.3つの状況があります.
1.プライマリ・キーがある場合、プライマリ・キーはクラスタ・インデックスです.
2.プライマリ・キーがない場合、最初の空でないnullの唯一のインデックスはクラスタ・インデックスです.
3.上にない場合は、クラスタインデックスとして隠しrow-idがあります.
ほとんどの場合、テーブルを作成するときにプライマリ・キーが作成されるため、ほとんどはプライマリ・キーに基づいてクラスタ化されます.
プライマリ・キー・フィールドに基づいてクエリーを行う場合、効率が最も高く、二次検索を必要とせず、直接プライマリ・キー・フィールドでインデックス・ツリーをクエリーします.リーフ・ノードは格納されたデータです.
プライマリ・キーに基づいてクエリーを行う場合、唯一の場合、実行計画は次のようになり、差が少なく最も効率的です.typeはconst rowで1行だけスキャンする必要があります
1.プライマリ・キーがある場合、プライマリ・キーはクラスタ・インデックスです.
2.プライマリ・キーがない場合、最初の空でないnullの唯一のインデックスはクラスタ・インデックスです.
3.上にない場合は、クラスタインデックスとして隠しrow-idがあります.
ほとんどの場合、テーブルを作成するときにプライマリ・キーが作成されるため、ほとんどはプライマリ・キーに基づいてクラスタ化されます.
プライマリ・キー・フィールドに基づいてクエリーを行う場合、効率が最も高く、二次検索を必要とせず、直接プライマリ・キー・フィールドでインデックス・ツリーをクエリーします.リーフ・ノードは格納されたデータです.
プライマリ・キーに基づいてクエリーを行う場合、唯一の場合、実行計画は次のようになり、差が少なく最も効率的です.typeはconst rowで1行だけスキャンする必要があります
+----+-------------+-------+-------+---------------+---------+---------+-------+------+-------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+-------+---------------+---------+---------+-------+------+-------+
| 1 | SIMPLE | tblz | const | PRIMARY | PRIMARY | 4 | const | 1 | |
+----+-------------+-------+-------+---------------+---------+---------+-------+------+-------+