Otóż, mam 4 tabele: hotele (zawiera 21 rekordów), oferty(890), wycieczki(10 565), wyjazdy_przyjazdy[250 466(!) rekordów].
Przeszedłem już przez wżystkie etapy normalizacji, tabele są już maksymalnie porozbijane.
Zwykłe zapytanie wygląda tak:
SELECT wycieczki.id_exim, hotele.nazwa, wycieczki.dlugosc_pobytu, wyjazdy_przyjazdy.data_rozp FROM hotele, oferty, wycieczki, wyjazdy_przyjazdy WHERE hotele.id_exim = oferty.id_hotelu AND oferty.id_eximtours = wycieczki.id_oferty AND wycieczki.id_exim = wyjazdy_przyjazdy.id_wycieczki AND hotele.nazwa_kraju = 'Egipt'
Zapytanie wykonuje się przez 0.3 sekundy.
Gdy chcę, aby rekordy byłu posortowane wpisuję
SELECT wycieczki.id_exim, hotele.nazwa, wycieczki.dlugosc_pobytu, wyjazdy_przyjazdy.data_rozp FROM hotele, oferty, wycieczki, wyjazdy_przyjazdy WHERE hotele.id_exim = oferty.id_hotelu AND oferty.id_eximtours = wycieczki.id_oferty AND wycieczki.id_exim = wyjazdy_przyjazdy.id_wycieczki AND hotele.nazwa_kraju = 'Egipt' ORDER BY wyjazdy_przyjazdy.data_rozp,wyjazdy_przyjazdy.czas_rozp
jednak, w tym wypadku sam wyłączyłem serwer (dbciążenie procka 100% przez 2 min), bo nie chciało mi się czekać.
Dodałem więc na koniec
LIMIT 10
Po kolejnych 2 minutach i 100% obciążeniu procesora, znowu dałem za wygraną.
I tu pytanie: czemu to trwa tak długo i czy można to jakoś skrucić?