![]() |
![]() |
![]()
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 ? |
|
|
![]() |
![]()
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. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 4.10.2025 - 02:37 |