Dobry den,
jeste mi to neda nez nedoplnit ten zajimavy off topic - chtel bych jen
upozornit na jednu malickost - veta "není nic jednoduššího, než to vyzkoušet
na malinkém vzorku dat a zjistit si plan" nema uplne nejvetsi relevanci
proto, ze jsou na Oracle mody optimalizatoru, kdy se berou v potaz i
histogramy a statistiky platne pro dane indexy a sestavuje exekucni plan
nejen podle dotazu ale i podle dat, ktera jsou v tabulce, takze napr. pokud
mate v tabulce 5 zaznamu, asi pujde vzdycky na full table scan protoze to
bude rychlejsi nez jit na indexy, pokud jich je milion, muze se obecne
chovat jinak. Pokud je treba uz z dotazu zrejme, ze vysledek dotazu ma
vratit hodne zaznamu (treba vic jak polovinu v dane tabulce), je taky nekdy
pouzije full table scan. Pri indexech nad null policky je to podobne - viz
jiny prizpevek k tomuto tematu
Asi jestli jsou takhle (nebo jeste jinak) inteligentni i jine databaze,
ale Oracle (ve verzi 9.2.x.x) to delat urcite umi.
Docela jsme si s tim v minulosti uzili kdyz nas zakaznik prohanel za to,
ze nemame korektne oindexovanou databazi, protoze se pri zatezovem testu
objevovaly prilis casto full table scany - bylo to nicmene tim, ze v
databazi pro zatezovy test byla "relativne stejna" (malo pestra) data,
pouziti indexu pak bylo neefektivni a tak delal Oracle nekdy full table
scany protoze by si indexem pomohl podle jeho nazoru prilis malo.
Proto dejte pri zatezovych testech pozor i na realisticnost dat v
databazi.
Prirozene by se mely pravidelne aktualizovat statistiky indexu, apod...
Ale to uz je opravdu hodne OT :-)
Ahoj, Archie
----- Original Message -----
From: "Ing. Radek Žuja" <[EMAIL PROTECTED]>
To: "Java" <[email protected]>
Sent: Tuesday, October 10, 2006 3:59 PM
Subject: Re: SQL SUM Statement - Performace tuning
Přiznám se že nepracuji s Oracle ale se Sybase.
Jsem si když jsem odpovídal poznámky o platformě nevšiml
Myslel jsem že optimizátory by v tomto případě měli pracovat
podobně(tedy pokud můžu scanovat index, který je menší než tabulka,
udělám to). Pokud máte Oracel Server nainstalovaný není nic jednouššího,
než to vyzkoušet na malinkém vzorku dat a zjistit si plan.
Pokud jsem vás v tomto případě navedl špatným směrem tak se omlouvám.
>> lkuu zase snižujete propustnot víceuživatelské změny dat v base
>> tabulce, ale objem dat v agregaci bude výrazně menší než objem indexu.
> Tady už si tak jistý nejsem. Jsem přesvědčen, že v tomto konkrétním
> případě Oracle udělá full table scan bez ohledu na jakýkoliv index.
> Tedy pokud se jedná o sum přes všechny řádky. Podrobné zdůvodnění
> včetně výpočtů je v dokumentaci k Oracle.Viz.třeba
>
http://download-uk.oracle.com/docs/cd/B10501_01/server.920/a96533/optimops.htm#44852
> nebo http://relief.incad.cz/oracle9/server.920/a96533/optimops.htm#44852
> Ale ozývám se proto, že to třeba špatně chápu a zajímalo by mě jak to
> je opravdu s optimizerem v Oracle v tomto případě.
>
> Pavel
>