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 />

Temast võib mõelda, kui analoogiast raamatu lõpus oleva indeksiga. Indeksit<br />

võidakse hoida eraldi failis (ingl. k. index file). Indeksid sisaldavad viiteid<br />

tabelite ridadele, mida hoitakse andmefailis (ingl. k. data file).<br />

Indekseid ei kirjeldata SQL standardis, kuid praktiliselt igas<br />

andmebaasisüsteemis on nad olemas. Tüüpilise B-puu indeksi loomiseks<br />

mõeldud lause on erinevates andmebaasisüsteemides vaata et sarnasemgi,<br />

kui mitmed SQL standardis kirjeldatud lausendid.<br />

Füüsilise <strong>disain</strong>i käigus tuleb määrata, kas indeksite lisamine suurendab<br />

süsteemi töökiirust. Kõigepealt tuleb koostada nimekiri veergudest, mida võiks<br />

indekseerida ja seejärel eemaldada sealt veerud, mille indekseerimine<br />

muudab andmete muutmise liiga aeglaseks.<br />

Päringu täitmisel on alternatiiviks indeksi kasutamisele täielik tabeli<br />

läbikäimine (ingl. k. full table scan). See tähendab, et kui otsitakse tabelist<br />

mingile tingimusele vastavaid ridu, siis tuleb vaadata ükshaaval läbi kõik selle<br />

tabeli ridu sisaldavad plokid.<br />

Indeksi kasutamise üle mingi andmebaasi operatsiooni täitmisel otsustab<br />

andmebaasisüsteem.<br />

<strong>2.</strong><strong>2.</strong>3.1 Indeksite loomine tabeli veerule või veergudele<br />

Indeksid mingite veergude jaoks luuakse kas automaatselt<br />

andmebaasisüsteemi poolt või andmebaasi programmeerija või<br />

administraatori poolt CREATE INDEX lausega.<br />

Indekseeritakse baastabelite veerge.<br />

SQL standard ei täpsusta CREATE INDEX käsu struktuuri, kuid see on<br />

enamikus andmebaasisüsteemides olemas.<br />

CREATE [UNIQUE] INDEX index_name<br />

ON table (column [, ]…);<br />

Näiteks:<br />

CREATE INDEX index_pnimi<br />

ON tootaja (pnimi);<br />

Indeksit ei saa luua virtuaalsele tabelile e. vaatele. See tähendab, et indeksit<br />

ei saa siduda vaate objektiga. Erandiks on materialiseeritud vaated, mis on<br />

tegelikult vaate e. päringu põhjal loodud baastabelid ja millele võib luua<br />

indekseid.<br />

Nii ei saa:<br />

CREATE VIEW hinded AS<br />

SELECT pnimi, enimi, hinne FROM tudeng,oppim<br />

WHERE tudeng.tkood=oppim.tudkood;<br />

19

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

Saved successfully!

Ooh no, something went wrong!