私は外部キーにインデックスを持ち、これらの外部キーを含むインデックスをクラスタ化したテーブルがたくさんあります。例えば、私は次のようなテーブルを持っている:複合インデックスのオーバーヘッド
TABLE: Item
------------------------
id PRIMARY KEY
owner FOREIGN KEY
status
... many more columns
MySQLは、主キーと外部キーのインデックスを生成しますが、時には、私は、クラスタ化やカバーのインデックスを作成しますので、クエリのパフォーマンスを向上させたいです。これにより、重複する列を持つ索引が作成されます。私はidx_owner
を落とした場合は、インデックスの最初の列としてowner
を持っているので
INDEXES ON: Item
------------------------
idx_owner (owner)
idx_owner_status (owner, status)
は、通常idx_owner
を使用することになり、将来のクエリはちょうどidx_owner_status
を使用します。
idx_owner
の価値はありますか? MySQLはインデックスの一部のみを使用していますが、idx_owner_status
を使用するための追加のI/Oオーバーヘッドはありますか?
編集:私は実際に方法に興味がありますInnoDBはインデックスに関して動作します。