MySQLが適切なINDEXを使用しない

create table tb_hoge(
	:
id_a tinyint not null,
id_b int unsigned not null default 0,
id_c int unsigned not null,
id_d int unsigned not null auto_increment,
	:
index(id_a,id_b),
index(id_a,id_c),
index(id_a,id_d),
);

このようなテーブルに対し、

select * from tb_hoge where id_a=a and id_c>=b;

というSQL文を実行すると MySQL が不適切な INDEX(id_a,id_d など) を使用してしまうことがあるらしい。

select * from tb_hoge use index(id_a_2) where id_a=a and id_c>=b;

のように使用する INDEX を指定することで回避できるらしい。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です