2011-07-14 16 views
0
EXPLAIN SELECT `test_versions`.* FROM `test_versions` WHERE (`test_versions`.test_id IN (363,534,271,274,365,390,404,405,406,407,409,182,201,1386,1387,1388,1389,1390,1307,1308,1309,1310,1311,424,423,393,361,357,355,353,352,351,350,347,209,339,340,345,223,305,66,307,303,221,227,228,229,230,231,210,214,215,217,218,219,234,235,236,237,238,239,232,233,212,100,59)) 


Id select_type table   type possible_keys     key key_len ref row Extra 
'1', 'SIMPLE', 'test_versions', 'ALL', 'fk_test_versions_on_test_id', NULL, NULL, NULL, '76', 'Using where; Using filesort' 

既に指定されているインデックスを使用していません。私は明示的にUSE INDEXを渡したくありません。このクエリの問題は何ですか?このクエリでインデックスが使用されないのはなぜですか?

+3

非常に関連しています:http://stackoverflow.com/questions/586381/mysql-not-using-indexes-with-where-in-clause – Mat

答えて

0

結合が必要な場合(インデックスを使用することができますが)、オブジェクトを変更する必要はありません。includesを使用しますが、いくつかのオブジェクトを変更する必要があります。

関連する問題