indexarea bazelor de date

9
INDEXAREA BAZELOR DE DATE Marcu Ruxandra Informatica Anul II

Upload: mruxandra

Post on 23-Oct-2015

18 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Indexarea Bazelor de Date

INDEXAREA BAZELOR DE DATE

Marcu Ruxandra

Informatica

Anul II

Page 2: Indexarea Bazelor de Date

SCOPUL INDEXARII TIPURI DE INDEX CREAREA UNUI INDEX STERGEREA UNUI INDEX CONCLUZII BIBLIOGRAFIE

Page 3: Indexarea Bazelor de Date

SCOPUL INDEXARII

Indexarea in sistemul ORACLE are doua principale scopuri:

- pentru a accelera afisarea liniilor cu o cheie particulara

- pentru a forta unicitatea valoriilor din coloane, de obicei valorile cheii principale

Page 4: Indexarea Bazelor de Date

TIPURI DE INDEX

Fisierele index simple ( cu extensia .IDX), care contin o singura cheie de ordonare;

Fisiere index compuse ( cu extensia .CDX), care memoreaza mai multe chei de ordonare, numite etichete, una singura fiind active la un moment dat si anume eticheta active.

Page 5: Indexarea Bazelor de Date

CREAREA UNUI INDEX

Crearea unui fisier index simplu este data de comanda INDEX:

CREATE [UNIQUE] INDEX index_name

ON table (column [m]…)

Crearea unui fisier index compus:

INDEX  ON <expr>  TO <fisier.idx>  |  TAG <nume  eticheta>

[OF <fisier.cdx>][  FOR <exp  L>][  ASCENDING  |  DESCENDING  ][ UNIQUE ]

Page 6: Indexarea Bazelor de Date

STERGEREA UNUI INDEX

Pentru a sterge definitia unui index din tabela de date, introduceti:

DROP INDEX index_name;

Un index nu poate fi modificat.

Cand este folosit un INDEX?

Depinde de optimizatorul ORACLE in momentul executiei. ORACLE 7 permite ambele metode de optimizare SQL:

Functie de un set de reguli

Functie de cost

Page 7: Indexarea Bazelor de Date

Utilizarea indexarii

Functie de cost Modulul de optimizare bazat pe costul executiei

decide un plan de executie pentru o secventa SQL calculand costul cailor alternative folosind informatii statistice acumulate daca este posibil. De obicei se va decide cea mai buna cale de utilizare a unui index.

Sugestii pentru INDEXARE:

O tabela cu mai mult de 200 linii va beneficia din indexare pentru imbunatatirea performantelor, daca mai putin de 10% din linii vor fi intoarse in cazul unei interogari.

Indexati toate coloanele acolo unde sunt cerute valori unice.

Daca doua sau mai multe coloane sunt utilizate in mod frecvent impreuna in clauza WHERE sau JOIN atunci creeati un index concatenat. (CONCATENATED INDEX)

Evitati mai mult de trei indexi pentru o tabela. In acest caz va fi o supraincarcare in cazul unei operatii DML.

Functie de un set de reguli Indecsii de pe coloane trebuie adresati in clauza

WHERE: Urmatoarea interogare nu foloseste un index atata

timp cat clauza WHERE nu este prezenta:

SELECT ENAME,JOB,SAL,COM

FROM EMP;

Urmatoarea interogare va folosi un index pe coloana ENAME:

SELECT *

FROM EMP

WHERE ENAME=‘JHONES’;

Un index nu va fi folosit daca coloana referita in clauza WHERE face parte dintr-o expresie sau functie. Exemplul urmator nu foloseste index deoarece coloana este parte a unei functii:

SELECT *

FROM EMP

WHERE UPPER (ENAME) =‘JHONES’;

Page 8: Indexarea Bazelor de Date

Concluzii

Indecsii - instrument ideal pentru imbunatatirea performantei unei baze de date;

Cu cat avem mai multi indecsi, cu atat avem raspunsuri mai prompte;

Numarul de indecsi in cazul bazelor de date la care operatiile de inserare, stergere si actualizare sunt frecvente trebuie limitat;

Indecsii pot fi folositi in mod extensiv pentru optimizarea accesului la date in cazul bazelor de date la care domina operatiile de tip regasire.

Page 9: Indexarea Bazelor de Date

Bibliografie

Dollinger, Robert, Bazele de date si gestiunea tranzactiilor, Ed. Albastra, Cluj-Napoca, 1998, pp. 139-141;

Voica, Vasilica, Sisteme informatice cu baze de date, Universul juridic, Bucuresti, 2005, pp. 106-110.