MySQLのINDEXに関する質問です。アドバイスお願いいたします。
以下のテストを実施したところ、Query2ではINDEXが使われない状況となってしまいました。
MySQL4,5ともに同じ状況です。
▼検証対象テーブル
CREATETABLEIFNOTEXISTSitems(
idBIGINT(20)UNSIGNEDNOTNULLauto_increment,
prefecture_idINT(11)UNSIGNEDdefaultNULL,
item_type_idINT(11)UNSIGNEDdefaultNULL,
item_category_idINT(11)UNSIGNEDdefaultNULL,
data_idsLONGBLOBdefaultNULL,
PRIMARYKEY(id)
)ENGINE=MyISAM;
▼作成したINDEX
ALTER TABLE items ADD INDEX index_all_keys (prefecture_id,item_type_id,item_category_id);
▼検証を行ったクエリー
>Query1:全てのキーを条件指定→INDEXを利用
mysql>EXPLAIN SELECT id,data_ids FROM items WHERE prefecture_id IN (10,11,12,15,16,17,19,24,31)ANDitem_type_id=(1)ANDitem_category_idISNULL;
|1|SIMPLE|ITEM|range|index_all_keys|index_all_keys|20|NULL|11|Usingwhere|
>Query2:全てのキーを条件指定ただし、IN演算子で全て複数→INDEXを利用しない!なぜ?
mysql>EXPLAIN SELECT id,data_ids FROM items WHERE prefecture_id IN(1,2,3,4,5,6,7,10,15,20,26,41,46)ANDitem_type_idIN(1,5,6,8,9,10,11)ANDitem_category_idIN(1,2,3,4,5,9,10);
|1|SIMPLE|ITEM|ALL|index_all_keys|NULL|NULL|NULL|13311|Usingwhere|