Indexovani - teorie

Karel Zak zakkr na zf.jcu.cz
Středa Říjen 16 14:59:27 CEST 2002


On Wed, Oct 16, 2002 at 02:34:11PM +0200, Honza Pazdziora wrote:
> > Podobne je to pokud neexistuje spolecny index. K tabulce se pristupuje 
> > pomoci indexu a data v tabulce se dale filtruji podle polozek v indexu 
> > neobsazenych. Mam mocit, ze zde zaznelo, ze pokud jsou indexy na obe 
> > polozky dotazu tak je to stejne jako jejich spolecny index. To je 
> > pochopitelne hloupost. Pouzije se jen jeden index a na dalsi cast 
> > se pouzije "filtrovani" -- pokud by se pouzilo vice indexu tak by se 
> > pak muselo delat nejake filtrovani/merge mezi vysledky z jednotlivych indexu
> > (coz se deje pri pouziti napr. subselectu nebo nejakych joinu). Viz:
> 
> Nevim, jestli narazite na to, co jsem psal ja, ale neni obecne pravda,
> ze pokud mate podminku sloupec1 = hodnota1 and sloupec 2 = hodnota2
> a jeden index na sloupci sloupec1 a druhy index na sloupci sloupec2,
> tak ze se pouzije pouze jeden z tech indexu a nad takto ziskanymi
> polozkami se pak ta druha podminka vyhodnoti podle zaznamu v radcich
> tabulky. Optimizer muze vedet, ze pristup do radku tabulky je vyrazne
> pomalejsi nez si udelat jeden seznam id zaznamu pro prvni podminku

 Hmm.. to by me celkem zajimaly ty okolnosti. Napada mne jen velmi
 rozsahla velikost jednoho radku, jejiz nacitani a zpracovani by mohlo 
 byt casove narocnejsi nez prace se vice indexy a jejich merge.

> podle prvniho indexu, seznam id zaznamu pro druhou podminku podle
> druheho zaznamu, a pak to proste sloucit pomoci hash/merge/sort/cokoli
> join. Ono se totiz muze stat, ze udelat tohle a vyhodnotit dva seznamy
> na zaklade indexu (pouze) bude vyrazne rychlejsi a tudiz z pohledu
> optimizeru levnejsi nez porovnavani hodnot v tabulce na zaklade
> jednoho seznamu. Hmmm. Bavime-li se tedy v rovine "Indexovani -
> teorie" -- je mozne, ze konkretne tohle PostgreSQL neumi.

 Jo cetl jsem tu poznamku o Oracle. U PostgreSQL o tom nevim. 
 Pozeptam se. Plne to chapu u tech prikladu co jsem posilal
 (subselect,join), ale u bezneho WHERE nevim :-)
 
    Karel

-- 
 Karel Zak  <zakkr na zf.jcu.cz>
 http://home.zf.jcu.cz/~zakkr/
 
 C, PostgreSQL, PHP, WWW, http://docs.linux.cz, http://mape.jcu.cz


Další informace o konferenci Databases