ďťż
 
Optymalizacja zapytan: dwa problemy ďťż
 
Optymalizacja zapytan: dwa problemy
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

Optymalizacja zapytan: dwa problemy



Leszek Pachura - 01-02-2007 00:07
Optymalizacja zapytan: dwa problemy
  Czesc!

Problem 1.

Laczymy tabele A i tabele B na polu X.
Dodatkowo ograniczamy mozliwy zakres wartosci X.

### select * from A, B where A.X = B.X and A.X between 100 and 200

Zalozmy teraz ze w tabeli A wszystkie rekordy maja X = 100..200,
natomiast w tabeli B jest tylko kilka takich rekordow.

Czy optymalizator (w moim przypadku, Oracle'a 9/10) bedzie potrafil
przeniesc betweena "na druga strone", czy tez lepiej bedzie
gdy napisze:

### select * from A, B where A.X = B.X and A.X between 100 and 200
### and B.X between 100 and 200

....?

Problem 2.

Mamy sobie tabele z kolumnami A, B, C.
Dla jednej wartosci A wszystkie wartosci B sa zawsze takie same.
Chcemy teraz wyciagnac sume C pogrupowana po A i do tego jeszcze
wartosc B.
Czy lepiej (z punktu widzenia wydajnosci) bedzie napisac tak:

### select A, max(B), sum(C) group by A

....czy tez:

### select A, B, sum(C) group by A, B

....?

Wiem ze zaleznosc B od A dowodzi faktu ze dane nie sa super
znormalizowane, no ale tak czasem bywa. Wiem tez ze wydajnosc
zalezy od miliona okolicznosci - mi chodzi o sredni przypadek...

Dzieki!

--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl





dap - 01-02-2007 00:07

  Leszek Pachura wrote:

sprawdz - w Oracle nic nie jest pewne.

explain plan for
select ...

select * from table(dbms_xplan.display) ;

dap




MarcinP - 02-02-2007 00:09

  dap wrote:
> Leszek Pachura wrote:
>
> sprawdz - w Oracle nic nie jest pewne.

Ujme to inaczej w Oraclu wszystko zależy od statystyk i parametrów ;)
Samo działanie CBO jest hmmm w 90 % przypadków przewidywalne - wkońcu to
też algorytm, złożony ale jednak niezmienny.

A wracajac do glownego pytania - duzo zależy od wolumenu danych - na
stosunkowo malym wolumenie wiekszosc zapytan niezaleznie od planu
wykonuje sie poprawie - problem zaczyna sie przy duzej skali.

pozdrawiam,
Marcin 'PIORO' Przepiorowski




dap - 02-02-2007 00:09

  MarcinP wrote:
> dap wrote:
>> Leszek Pachura wrote:
>>
>> sprawdz - w Oracle nic nie jest pewne.
>
>
> Ujme to inaczej w Oraclu wszystko zależy od statystyk i parametrów ;)

.... i błędów w danej wersji - tylko test pozwala to poznać.

dap
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    Oracle, SQL, PL/SQL. Jak =?ISO-8859-2?Q?napisa=E6_zapytanie=2C?==?ISO-8859-2?Q?_kt=F3re_zwr=F3ci_nazw=EA_atrybutu=2C_kt=F3reg o?==?ISO-8859-2?Q?_warto=B6ci_spe=B3niaj=B1_zadany_warunek?= =?ISO-8859-2?Q?Narz=EAdzie_do_budowania_zapyta=F1_SQL=2C?==?I SO-8859-2?Q?_PL/PgSQL=2C_PL/SQL=2C_T-SQL?= [ms sql] =?ISO-8859-2?Q?wy=B6wietlenie_pierwszych_5_rekord?==?ISO-8859-2?Q?=F3w_z_zapytania_=3F_odpowiednik_ROWNUM_w_o?== ?ISO-8859-2?Q?raclu_dla_MS_SQL=27a?= mysql i mysql-front, problem String line; if (line=="cos"){...}....problem Problemy z =?ISO-8859-2?Q?instalacj=B1_PostgreSQL_na_syste?==?ISO-8859-2?Q?mach_Windows?= [postgres] Problem z =?ISO-8859-2?Q?zmian=B1_struktury_i_z?==?ISO-8859-2?Q?ale=BFno=B6ciami=2E?= [oracle] =?ISO-8859-2?Q?zmia=BFd=BFony_przez_problem=3A_za?==?ISO-8859-2?Q?pytanie_do_hierarchi?= phpMyAdmin zadaje =?ISO-8859-2?Q?z=B3e_zapytania=2E=2E=2E_Dl?==?ISO-8859-2?Q?aczego=3F?= [mysql 5.x] jak =?ISO-8859-2?Q?zrealizowa=E6_zapytanie=3F_cz?==?ISO-8859-2?Q?yli_podzapytanie_i_wi=EAcej_ni=BF_jeden_rz=B1? ==?ISO-8859-2?Q?d_wynik=F3w?=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • lubiatowo.xlx.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com