Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyciągnięcie danych z 3 tabel jednocześnie - problem z wydajnością
Forum PHP.pl > Forum > Bazy danych > MySQL
Mody23
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 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.
IProSoft
Pokaż co zwróci zapytanie:

Kod
EXPLAIN EXTENDED 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
markuz
Indeksy na te wszystkie pola którymi się łączysz pozakładane?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.