17.03.2015 Views

2. Füüsiline disain

2. Füüsiline disain

2. Füüsiline disain

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

TTÜ: Andmebaasi füüsiline <strong>disain</strong> (2012)<br />

© Erki Eessaar<br />

statistilised väärtused, mis iseloomustavad tabelites olevaid andmeid (nt. kui<br />

palju on tabelis ridu, kui palju on veerus erinevaid väärtuseid, milline on nende<br />

jaotus). Regulaarse statistika värskendamise tagamine, on üks andmebaasi<br />

administraatori põhiülesannetest.<br />

Indeksite kasutamise reeglid on järgmised:<br />

• Andmebaasisüsteem kaalub indeksi kasutamist, kui päringus on WHEREklausel<br />

ja selles klauslis on märgitud see indekseeritud veerg. Kui veerul<br />

on indeks ei tähenda see, et andmebaasisüsteem seda tingimata kasutab.<br />

Andmebaasisüsteem otsustab indeksi kasutamise SQL lause füüsilise<br />

täitmisplaani koostamise käigus, võttes arvesse andmebaasis olevate<br />

andmete kohta kogutud statistika.<br />

• Funktsioonil mitte-põhinevat indeksit ei kasutata, kui WHERE-klauslis<br />

toodud veerg on osa mingist funktsioonist või avaldisest (ingl. k.<br />

expression). Näiteks:<br />

SELECT *<br />

FROM tootaja<br />

WHERE UPPER(pnimi) = ‘KASK’;<br />

SELECT *<br />

FROM Laud<br />

WHERE pikkus-1 >100;<br />

Lahenduseks oleks kasutada funktsioonil põhinevat indeksit. Funktsioonil<br />

põhineva indeksi korral arvutatakse indeksisse paigutatavad väärtused<br />

tabelisse pandavatele väärtustele rakendatava funktsiooni tulemusena.<br />

CREATE INDEX fidx_tootaja_pnimi ON Tootaja (Upper(pnimi));<br />

Funktsioonil põhinevat indeksit saab nt. luua nii andmebaasisüsteemis<br />

PostgreSQL kui ka Oracle.<br />

<strong>2.</strong><strong>2.</strong>3.5 Indeksite klassifikatsioon<br />

Indekseid võib klassifitseerida mitmel erineval viisil. Üks indeks võib kuuluda<br />

korraga mitmesse klassi. Järgnevalt on toodud näiteid võimalikest liigitustest:<br />

Osalevate veergude arv<br />

• Lihtindeks – indeksisse on võetud väärtused ühest veerust.<br />

• Liitindeks – mitu veergu võib olla ühe indeksiga indekseeritud kas siis<br />

otsimise kiiruse või ridade unikaalsuse kindlustamise eesmärgil.<br />

Osalevate tabelite arv<br />

• Üks tabel (tüüpiline olukord).<br />

• Mitu tabelit (vt. joini indeks).<br />

Veeru tüüp, millele on loodud<br />

21

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!