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