Indecsi

Un index esteun obiect  schema care  poate  grabi procesul de  regasire a  inregistrarilor prin utilizarea unui pointer.
Indecsii pot fi creati automat sau explicit.
Daca nu este definit un index asupra unei coloane, pentru regasirea pe baza  unei valori din aceasta coloana se va face o scanare a  intregului tabel.Prin intermediul indecsilor se minimizeaza numarul acceselor  pe disc prin utilizarea unei metode rapide de acces la date. Indecsii sunu  utilizati si  gestionati de serverul Oracle. Indecsii sunt  independenti atat logic cat si fizic de  tabelele pe care le indexeazã.  Acest lucru semnifica faptul ca ei pot fi creati si eliminati in orice moment, fara  a afecta in vreun fel tabelele de baza sau alti indecsi.
Observatie: Daca se sterge un tabel  atunci sunt automat stersi si indecsii corespunzatori.
    Crearea si intretinerea indecsilor este o sarcina a administratorului bazei de date.

Crearea indecsilor  se poate face:
- automat-  atunci cand se defineste o cheie primara sau  candidat (unica) intr-un tabel
- manual - indecsii nornali sunt creatide utilizator pentru a  grabi accesul la inregistrãri.

CREATE  INDEX nume_index
    ON nume_tabel (coloana [, coloana][, coloana]...)
Exemplu

Din OEMC, prin selectarea din schema utilizatorului curent a obiectului Index, deschiderea meniului contextual si alegerea optiunii Create

Indexare  pe baza de functii:  permite ca un index sa fie construit pe baza unei expresii. Aceasta expresie poate fi  construita  pe baza coloanelor din tabel, a constantelor, functiilor SQL sau a functiilor definite de utilizator
Exemplu
 In OEMC , pentru adaugarea de expresii, respectiv pentru eliminarea acestora se folosesc  pictogramele de sub tabelul care indica  structura tabelului pe care se creaza indexul.

Stergerea unui index  din dictionarul de date  se realizeaza cu comanda:

DROP  INDEX nume_index;
Pentru a putea sterge un index utilizatorul trebuie sa fie proprietarul  acestuia sau sa aiba privilegiul  DROP ANY  INDEX.

Din OEMC, prin selectarea din Navigator a indexului dorit, deschiderea meniului contextual si alegerea optiunii Remove.
 

Un index este util daca:
- o coloana contine un numar mare de  valori
- o coloana contine un numar mare de valori NULL
- una sau mai multe coloane sunt utilizate frecvent  intr-o clauza WHERE sau intr-o conditie de jonctiune
-tabelul este mare si, pentru majoritatea  interogarilor se asteapta  ca raspunsul sa contina  mai putin de 2-4% din inregistrari

Nu este indicata crearea de indecsi daca:
- tabelul este mic
- coloanele nu sunt utilizate frecvent in  conditii pentru interogari
- pentru cele mai multe interogari se asteapta ca raspunsul sa contina mai mult de 2-4% din inregistrari
- tabelul este actualizat frecvent
- coloanele de index sunt  referite ca parte a unei expresii

Verificarea  existentei  unui index  se face prin consultarea  a doua vederi din dictionarul de date:
USER_INDEXES - care contine  numele si tipul indecsilor si
USER_IND_COLUMNS care contine  numele indecsilor, nulele tabelelor pe care sunt acestia construiti si numele coloanelor
Exemplu