Citat:
Ursprungligen postat av lubic
Nu har jag iofs inte testat, men något liknade detta borde gå att använda:
SELECT q1.id, q1.date, group_concat(genres.name) genre_field FROM
(
SELECT m.id, m.date FROM movies m JOIN movie_genres mg ON mg.movie_id = m.id AND mg.genre_id IN (1, 11) GROUP BY m.id HAVING COUNT(DISTINCT mg.genre_id) = 2
) q1
JOIN movie_genres mg on mg.movie_id = q1.id
JOIN genres ON mg.genre_id = genres.id
GROUP BY q1.id
ORDER BY q1.date ASC
Det går kanske att joina på denna information redan i första frågan, vilket kanske är mer effektivt? Man får helt enkelt testa hur pass bra denna fråga är rent prestandamässigt för att se om det är en möjlig väg att gå.
|
Den querien du just skrev, är inte optimerad alls, du använder having, vilket innebär att du hämtar ut ALLA rader.
Skriv om, men gör rätt

Skippa Subqueries till så många delar du kan