Não há sentido em junções à esquerda se você estiver apenas procurando por faixas que tenham todas as palavras. Estou assumindo que (
trackid
,wordid
) é única em 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
Essa consulta se beneficiaria de índices em wordlist(word), trackwords(trackid,wordid) e track(id).