次のクエリを最適化しようとしています。
テーブル seafood_tbl には 500 のレコードがあります
テーブル dish_tbl には 10,000 レコードがあります
これを PHPmyadmin で実行すると、実行に 20 秒、つまり永遠にかかります。
SELECT
SUM(a.squid)
FROM seafood_tbl a
INNER JOIN dishes_tbl b ON
( b.id_group = a.id AND b.choice =0 )
OR
( b.id_chef = a.id_chef AND ISNULL( b.id_group ))
GROUP BY a.id
結合で参照されるすべてのフィールドにインデックスがあります。私は、dishes_tbl で OPTIMIZE TABLE を実行しました。
これが Explain からの出力です。
1 SIMPLE a ALL PRIMARY NULL NULL NULL 505 Using temporary; Using filesort
1 SIMPLE b ref_or_null choice_index,id_group_index,id_chef id_group_index 5 a.id 4 Using where
私のクエリに何かひどく問題がありますか、それとも別の場所を探すべきですか?