Indexovani - teorie

Jiri Borik jiri.borik na volny.cz
Středa Říjen 16 13:46:48 CEST 2002


On Wed, 16 Oct 2002 otakarek na post.cz wrote:

> Kdyz mam napr. SQL 'SELECT sl1,sl2,sl3 FROM tbl WHERE sl1='xxx' AND
> sl2='yyy' je lepsi provest indexovani jednotlive(tj. prvni index na
> sl1 a druhy index na sl2) nebo provest jeden slouceny index? 

Pokud existuje index sl1 nebo sl2, bude se hledat podle nej a druha pulka
vyrazu se dohleda sekvencne. Pokud existuji oba indexy, je to stejne,
protoze udela-li se vyber dle sl1, nelze uz sl2 na druhou cast vyberu
pouzit (a opacne). Nejrychlejsi vyber bude podle indexu sl1+sl2 nebo
sl2+sl1. Lepsi z obou bude ten index, ktery ma v prvni polozce mene
shodnych hodnot. To uz ale zalezi na konkretnich hodnotach v databazi. 

> Druhy pripad je v podstate stejny jen misto operatoru AND dojde k
> nahrazeni operatorem OR. 

Operator OR ve vyrazu vede vzdy na sekvencni hledani. Zatim jsem nenasel
pripad, kdy by DB sama od sebe udelala dva indexove vybery (dle sl1 a dle
sl2) a pak je sloucila.

> Testoval jsem to v praxi a vykonove je to srovantelne (PG 7..1.3, tabulka
> s radove nekolika 10-ti tisicemi radku se stochastickymi hodnotami).

Vyse uvedene mam prakticky overene na Progress v.9. Na PostgreSQL jsem to
moc netestoval, ale dle dosavadnich zkousek se mi to zda podobne.

Jirka Borik <jiri.borik na volny.cz>




Další informace o konferenci Databases