最適化しようとしているSQLクエリがあります。興味深いことに、あるMySQLサーバーでは、クエリは約0.06秒で実行されます。これは私が満足していることですが、別のサーバーでは、クエリは0.2秒近く(2倍の長さ)かかります。
SELECT fo.facets_id, fo.facets_options_id, fo.value
FROM facets_options fo
INNER JOIN categories_facets cf ON cf.facets_options_id=fo.facets_options_id
INNER JOIN categories c ON c.categories_id=cf.categories_id
WHERE fo.facets_id="2"
AND fo.language_id = "1"
AND c.enabled=1
GROUP BY fo.facets_options_id
ORDER BY fo.value ASC;
両方のサーバーの「EXPLAIN」出力は同じです。
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE fo ref PRIMARY,facets_options_id,facets_id,facets_id_2 facets_id 4 const 986 Using where; Using temporary; Using filesort
1 SIMPLE cf ref PRIMARY,categories_id,categories_id_2,facets_options_id facets_options_id 4 mydb.fo.facets_options_id 37
1 SIMPLE c eq_ref PRIMARY,enabled PRIMARY 4 mydb.cf.categories_id 1 Using where
クエリの実行速度が遅いサーバーはMySQL5.1.66を使用しており、クエリの実行速度が速いサーバーはMySQL5.5.29を使用しています。
新しいバージョンのMySQLは、クエリを最適化するためのより良い仕事をしている可能性がありますか?それとも、それを引き起こしている可能性のある他の何かがありますか?舞台裏で何が起こっているのかをもっと知るにはどうすればよいですか?