このMySQLクエリがあります:
EXPLAIN EXTENDED
SELECT img.id as iid,img.*,users.*,img.ave_rate as arate,img.count_rate as cn
FROM images AS img
LEFT OUTER JOIN users on img.uid=users.id
WHERE img.id NOT IN (SELECT rates.imageid from rates WHERE rates.ip=1854604622)
GROUP BY iid
ORDER BY
iid DESC
LIMIT 30
その出力は次のようになります。
1 PRIMARY img index NULL PRIMARY 4 NULL 30 580 Using where
1 PRIMARY users eq_ref PRIMARY PRIMARY 4 twtgirls3.img.uid 1 100
2 DEPENDENT SUBQUERY rates ref imageid,ip ip 5 const 4 100 Using where
最初の行でわかるように、PRIMARY キーをインデックスとして使用していますが、追加の列には「Using Where」がありますが、これはどういう意味ですか? キーが使用されていないということですか?3行目も同じ条件で……。
最後に、このクエリについてどう思いますか? 最適化されていますか?