Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> where czy Join on, gdzie lepiej umieścić warunek
Thuunder
post
Post #1





Grupa: Zarejestrowani
Postów: 234
Pomógł: 1
Dołączył: 29.10.2004

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


jak w temacie.
Zastanawiam się gdzie jest lepiej (optymalnie) umieścić warunek
czy w
where pole = 1
czy może join x on (złączenie) and pole = 1 ?

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
alegorn
post
Post #2





Grupa: Zarejestrowani
Postów: 341
Pomógł: 40
Dołączył: 23.06.2009

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


pytanie nie jest tak bez sensu.

nie ma jednoznacznej odpowiedzi, bo bywa tak i tak (zalezne od zapytania, bazy i hardware.)


optymalizacja nie jest prosta, i nie ma jednego lekarstwa na wszystko. zalezy to od masy czynnikow..

tak czy inaczej przy pisaniu polecen, trzea sie kierowac kilkoma regulami, o ktorych jesli temat cie zaciekawi - duzo znajdziesz w necie.

ogolna zasada brzmi :
* jesli piszesz relacyjnie zapytanie,to im wiecej informacji posylasz optymalizatorowi - tym lepiej. (czasem od tego moze zglupiec ale to juz inna para kaloszy, wtedy trzeba go prowadzic za reke)
* dobra zasada jest by warunki najbardziej ograniczajace wynik - dawac jak najwczesniej.


a tak naprawde, to:

1. napisz zapytanie na oba sposoby
2. potraktuj explain'em
2.a - sprawdz czy i w czym sie roznia, jesli nie widzisz zadnej roznicy - to znaczy ze optymalizator oba zapytania sprowadza do jednej postaci. roznica czasow wtedy nie powinna byc zauwazalna.
2.b jesli sie roznia - najlepszy bedzie ten ktory do wyniku potrzebuje jak najmniejszej ilosci rekordow przeszukac

3. sprawdz czasy wykonania (pamietaj by wylaczyc qc)

jesli nie masz jednoznacznej odpowiedzi po 3 pkt. :
5. wlacz profilowanie zapytan
6. wykonaj oba zapytania, i sprawdz w czynnikach pierwszych co jest ograniczeniem.(tutaj mozna sprawdzic min. ile czasu potrzebuje optymalizator i wiele innych ciekawych opcji)


na koniec : to ze przetestujesz na swojej maszynie - nie oznacza ze, na innym serwerze nie otrzymasz innych wynikow.. sprawdz to tez w jakichs stres testach
a jesli po tym wszystkim nadal cie nie satysfakcjonuje wynik - przemysl od nowa caly pomysl. byc moze inne podejscie do problemu da lepsze rezultaty, ewentualnie podrasuj ustawienia serwera (IMG:style_emoticons/default/wink.gif)

j.
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 4.10.2025 - 02:37