CATEGORII DOCUMENTE |
INDEX SI SINONIME - ORACLE
Index ORACLE poate fi creat in linia de comanda cu comanda CREATE INDEX.
CREATE [UNIQUE] INDEX index_name
ON table (column [m])
Pentru a creea un index numit I_NAME care va fi folosit pentru a imbunatatii timpul de interogare , introduceti:
CREATE INDEX I_ENAME
ON EMP (ENAME);
Indecsi unici sunt creati automat ca un
rezultat al constantelor PRIMARY KEY sau UNIQUE in tabela. Oricum
, se mai pot creea folosind comanda CREATE UNIQUE INDEX.
Pentru a evita valori duplicate in coloana EMPNO,
introduceti:
CREATE UNIQUE INDEX I_EMPNO
ON EMP (EMPNO);
Index-ul urmator asigura unicitatea valorii introduse in
tabela SHIPMENTS.
Acesta este denumit index CONCATENATED.
CREATE UNIQUE INDEX ORDER
ON SHIPMENTS (S_Num, P_Num);
Pentru a sterge definitia unui index din tabela de date , introduceti:
DROP INDEX indexname;
Folosirea unui INDEX depinde in parte de optimizatorul ORACLE in momentul executiei. ORACLE 7 permite ambele metode de optimizare SQL, functie de un set de reguli sau functie de cost.
Oracle decide cind este adecvat sa foloseasca indexi. Oracle tine seama de coloanele indexate si de tipul indexului si decide functie de urmatoarele reguli:
SELECT ENAME,JOB,SAL,COMM
FROM EMP;
Urmatoarea indetogare va folosi un index pe coloana
ENAME:
SELECT *
FROM EMP
WHERE ENAME = 'JHONES';
SELECT *
FROM EMP
WHERE UPPER(ENAME)= 'JHONES';
In mod similar daca HIREDATE a fost indexata, aceasta interogare nu va folosi index deoarece este o expresie:
SELECT *
FROM EMP
WHERE HIREDATE+7 = '01-JAN-84';
Modulul de optimizare bazat pe costul executiei decide un plan de executie pentru o secventa SQL calculind costul cailor alternative folosind informatii statistice acumulate daca este posibil. De obicei se va decide cea mai buna cale de utilizare a unui index.
Daca nu exista index in cadrul coloanelor IMBINATE
atunci se poate obtine o 'sortare-imbinata'. Asca
inseamna ca fiecare este sortata separat si apoi listele sortate sunt imbinate . De obicei coloanele
folosite pentru imbinari trebuie sa fie indexate. Daca numai una din tabele are
un index utilizabil, atunci cealalta tabela este tabela conducatoare.
De
exemplu:
SELECT ENAME, DNAME
FROM DEPT, EMP
WHERE EMP.DEPTNO = DEPT.DEPTNO
Daca numai EMP.DEPTNO este indexata , atunci DEPT este
tabela conducatoare. Acest lucru este normal deoarece DEPT intoarce mai multe
linii decit EMP. Daca ambele sunt indexate, Oracle alege
tabela conducatoare cintarind rangurile celor doua sisteme. Daca
rangurile sunt egale atunci Oracle alege tabela care este
listata ultima in clauza FROM.
Asa ca trebuie listate tabele mari cu cel mai mic numar de linii la sfirsitul clauzei FROM.
SELECT ENAME, DNAME
FROM EMP, DEPT
WHERE EMP.DEPTNO = DEPT.DEPTNO
Crearea unui SYNONYM pentru o Tabela, Imagine sau Secventa
Pentru a referi o tabela detinuta de un alt utilizator, trebuie sa prefixati numele tabelei cu numele utilizatorului care a creat-o urmat de punct (.).
Pentru a referi tabela EMP detinuta de SCOTT, introduceti :
SELECT *
FROM SCOTT.EMP;
Alternativa este de a crea un sinonim ( alt nume ) pentru tabela sau imaginea data.
Pentru a referi tabela EMP a lui SCOTT doar cu numele 'EMP', introduceti :
CREATE SYNONYM EMP
FOR SCOTT.EMP;
Acum, cand executati o cerere asupra tabelei EMP a lui Scott, doar introduceti :
SELECT *
FROM EMP;
Doar DBA poate crea sinonime PUBLICe la care toti utilizatorii sa aiba acces.
CREATE PUBLIC SYNONYM nume_sinonim
for [proprietar.] nume_obiect;
Un sinonim public poate fi eliminat prin tastarea :
DROP [ PUBLIC ] SYNONYM nume_sinonim;
Sinonimele sunt utilizate din motive de sceuritate si comoditate, incluzand :
Din motive de performanta, du e recomandabila utilizarea de sinonime la referirea de tabele in aplicatii.
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 1576
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved