Witam.
Posiadam 3 tabele w bazie:
-
movies
- tutaj są zapisane wszystkie informacje o filmach jakie posiadam (najważniejsza kolumna -movie_id
), -
species
- tutaj są gatunki danego filmu, np. film może być horrorem, dramatem i akcją (movie_id
jest łączone zspecies_id
), -
types
- tutaj są typy danego filmu, np. film może być czytany, z lektorem itp. (movie_id
jest łączone ztype_id
).
Moje zapytanie:
SELECT m.*, t.*, s.* FROM `zz_movies` m LEFT JOIN `zz_species` s ON m.movie_id = s.movie_id LEFT JOIN `zz_types` t ON m.movie_id = t.movie_id GROUP BY m.movie_id ORDER BY m.movie_added DESC LIMIT 20
W samej tabeli z filmami (movies) jest ponad 13200 rekordów, pozostałe dwie tabele są jeszcze bardziej obszerne.
Efektem tego zapytania jest ~20 sekundowe oczekiwanie na zwrot odpowiedzi z bazy danych. To jest oczywiście nie do przyjęcia. Pytanie - jak to rozbić? Najpierw wyciągać same ID filmów, a potem w pętli while() kolejne zapytanie, wyciągające gatunek i typ filmu czy jak to rozwiązać?
Dzięki.