Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [mysql] optymalne zapytanie sql
yalus
post 30.01.2008, 18:11:33
Post #1





Grupa: Zarejestrowani
Postów: 281
Pomógł: 0
Dołączył: 8.07.2005
Skąd: EU

Ostrzeżenie: (0%)
-----


witam

w bazie mam kilka tabel z ktorych chcialbym wyciagnac dane przy uzyciu jednego (ponizszego) zapytania:


  1. SELECT * FROM tabela1, tabela2, tabela3 WHERE tabela1.STATUS='green' AND tabela1.id=tabela2.id AND tabela2.id=tabela3.id ORDER BY tabela1.STATUS DESC LIMIT 0, 200


struktory tabel sa nastepujace:

tabela1
id imie nazwisko status

tabela2
id kol1 kol2 kol3 ... kol25

tabela3
id kol1 kol2 kol3 ... kol15


w tabeli1 sa 4 kolumny i okolo 45tys rekordow
w tabeli2 jest 25 kolumn i okolo 60tys rekordow
w tabeli3 jest 15 kolumn i okolo 20tys rekordow


powyzsze zapytanie dziala poprawnie ale czasami sie 'zawiesza' tzn trwa dluzej niz 30sek i dostaje komunikat o przekroczonym czasie na wykonanie skryptu

pytanie moje brzmi:

czy zapytanie to jest skonstruowane w optymalny sposob?
jaka jest roznica pomiedzy tak skonstruowanym zapytaniem a zapytaniem przy uzyciu JOIN?
czy duza liczba rekordow moze miec wplyw na czas nawet jak ograniczam do wyswietlenia tylko dwustu rekordow?
i ostatnie jak moglbym zmniejszyc czas dla takiego zapytania - czy wogole da sie cos zrobic?


--------------------
człowiek nie sznurek wszystko wytrzyma
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Kihol
post 1.02.2008, 11:53:43
Post #2





Grupa: Zarejestrowani
Postów: 46
Pomógł: 6
Dołączył: 20.06.2005
Skąd: Pyskowice

Ostrzeżenie: (0%)
-----


Po pierwsze sprawdź, czy to na pewno samo zapytanie trwa tyle czasu - bo robiąc LIMIT na 200 rekordów nie interesuje bazy, że jest ich tak na prawdę 20000.
Samego złączenia nie da się napisać bardziej optymalnie - bo JOIN będzie na pewno wolniejszy.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 20:14