SPEC si BURSA CODS NUME DOMENIU ----- ---------- --------------- 11 MATEMATICA STIINTE EXACTE 21 GEOGRAFIE UMANIST 24 ISTORIE UMANIST
TIP PMIN PMAX SUMA
-------------------- ----- ----- ----- FARA BURSA 0 399 BURSA SOCIALA 400 899 100 BURSA DE STUDIU 900 1799 150 BURSA DE MERIT 1800 2499 200 BURSA DE EXCEPTIE 2500 9999 300
F. Radulescu. Curs: Baze de date 4
INDECSI Un index este o structur de cutare rapid care poate fi folosit de sistem pentru creterea vitezei de evaluare a cererilor prin faptul c parcurgerea tabelelor nu se mai face secvenial, nregistrare cu nregistrare, ci sunt accesate direct liniile necesare cererii respective.
F. Radulescu. Curs: Baze de date 5
INDECSI Sistemul Oracle creaz automat indeci de tip unic pentru cheile specificate la crearea tabelei prin constrngerile PRIMARY KEY i UNIQUE. n plus fa de acetia se pot crea i alii, unici sau neunici (n acest ultim caz valorile indexate se pot repeta) prin cererea CREATE INDEX
F. Radulescu. Curs: Baze de date 6
INDECSI SINTAXA CREATE INDEX nume index ON nume_tabela (expresie1 [, expresie2, ...]); Exemplul 1: n cazul n care se execut frecvent cereri de cutare dup locul naterii studenilor, se poate crea un index mono-coloan dup acesta: CREATE INDEX INDEX_LOC ON STUD (LOC); F. Radulescu. Curs: Baze de date 7 EXEMPLE cont. Exemplul 2: n cazul n care se execut frecvent cereri de cutare dup locul naterii i codul specializrii studenilor, se poate crea un index multi-coloan: CREATE INDEX INDEX_LOC_CODS ON STUD (LOC, CODS);
F. Radulescu. Curs: Baze de date 8
EXEMPLE cont. Exemplul 3: n cazul n care se execut frecvent cereri de cutare dup anul i locul naterii studenilor, se poate crea indexul urmtor. Acesta folosete o expresie pentru extragerea anului naterii: CREATE INDEX INDEX_AN_LOC ON STUD (TO_NUMBER(TO_CHAR(DATAN, 'YYYY')), LOC); F. Radulescu. Curs: Baze de date 9 OBSERVATII Indecii sunt meninui automat de sistem. Orice modificare a tabelei este nsoit de reactualizarea indecilor dac valorile pe baza crora acetia au fost creai se modific.
F. Radulescu. Curs: Baze de date 10
OBSERVATII Din aceast cauz crearea unui numr mare de indeci pentru tabele care se actualizeaz frecvent poate duce nu la creterea vitezei de execuie ci la scderea sa. n documentaia sistemului sunt enumerate cazurile n care este indicat crearea de indeci i cazurile n care aceasta este contraproductiv.
F. Radulescu. Curs: Baze de date 11
INDECSI: DA! Coloanele conin un procent nsemnat de valori nule (crete viteza de regsire a nregistrrilor care conin valori nenule). Coloana/coloanele/expresiile respective sunt folosite n clauza WHERE a unor cereri executate frecvent.
F. Radulescu. Curs: Baze de date 12
INDECSI: DA! Coloanele conin o mare varietate de valori, Tabela are un numr mare de linii i majoritatea execuiilor de cereri afecteaz un procent de maxim 4% din acestea
F. Radulescu. Curs: Baze de date 13
INDECSI: NU! Tabela are un numr mic de linii. Majoritatea execuiilor de cereri afecteaz un procent mai mare de 4% din liniile tabelei. Coloana/coloanele/expresiile respective nu sunt folosite n clauza WHERE a unor cereri executate frecvent.
F. Radulescu. Curs: Baze de date 14
INDECSI: NU! Tabela este frecvent modificat (prin INSERT, UPDATE sau DELETE). Condiiile din WHERE conin expresii calculate pe baza coloanelor respective. n acest caz indexul nu poate fi utilizat pentru a crete viteza de execuie.
F. Radulescu. Curs: Baze de date 15
INDEX - STERGERE tergerea unui index se face prin cererea DROP INDEX nume_index; Fiind o comand DDL, tergerea unui index nu poate fi revocat cu ROLLBACK.
F. Radulescu. Curs: Baze de date 16
Bibliografie 1. Hector Garcia-Molina, Jeffrey D. Ullman, Jennifer D. Widom: Database Systems: The Complete Book, Prentice-Hall, Englewood Cliffs, NJ, 2002. 2. F. Rdulescu : Oracle SQL, PL/SQL, Editura Printech, ISBN 973- 718-203-02005