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 z `species_id`),
- `types` - tutaj są typy danego filmu, np. film może być czytany, z lektorem itp. (`movie_id` jest łączone z `type_id`).
Moje zapytanie:
Kod
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.