すべての単語を含むトラックのみを探している場合は、左結合に意味がありません。 (trackid
、wordid
)組み合わせはtrackwords
で一意です 。
SELECT t.id
FROM track as t, trackwords as tw, wordlist as wl
WHERE t.id=tw.trackid
AND wl.id=tw.wordid
AND wl.trackusecount>0 /* not sure what that is - you have it in your query */
AND wl.word in ('folsom','prison','blues')
GROUP by t.id
HAVING count(*) = 3
このクエリは、wordlist(word)、trackwords(trackid、wordid)、track(id)のインデックスから恩恵を受けます。