Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


Indecsi

sql



+ Font mai mare | - Font mai mic



Indecsi

Sa presupunem ca am creat o tabela cu comanda:

CREATE TABLE test ( id integer, content varchar )



si am inserat o multime de linii in aceasta tabela. La un moment dat avem nevoie sa rulam o interogare de forma:

SELECT content FROM test WHERE id = 5;

Serverul bazei de date va trebui sa parcurga intreaga tabela test, linie de linie, pentru a cauta toate liniile pentru care id-ul este 5. Daca tabela contine foarte multe linii si doar putine linii (poate chiar nici una) for fi returnate de catre interogarea anterioara, aceasta metoda este clar ineficienta.

Pentru a un acces direct si rapid la liniile unei tabele, se vor folosi indecsii.

Indecsii unei tabele functioneaza similar cu indexul unei carti de specialitate. Intr-un astfel de index, aflat de obicei la sfarsitul unei carti se gasesc principalii termeni si concepte intalnite in cartea respectiva, sortati alfabetic, indicandu-se in dreptul fiecarui termen pagina sau paginile la care poate fi intalnit termenul respectiv in carte. O persoana interesata de un anumit termen, nu va citi intreaga carte, ci va cauta in index pagina sau paginile corespunzatoare.

Exista doua tipuri de indecsi:

indecsi unici - sunt generati automat pentru coloanele ce fac parte din cheia primara sau asupra carora s-a definit o constrangere UNIQUE

indecsi non-unici - care sunt definiti de catre utilizator.

Crearea unui index se realizeaza cu comanda:

CREATE INDEX nume_index

ON nume_tabela(coloana1, coloana2, , coloanan)

De exemplu, daca dorim sa crestem viteza operatiilor de cautare dupa coloana nume din tabela elevi vom crea urmatorul index:

CREATE INDEX elevi_idx1

ON carti(nume)

Intr-un index putem include mai multe coloane ale unei tabele, ca in urmatorul exemplu:

CREATE INDEX elevi_idx2

ON carti(nume, prenume)

De asemenea pot fi incluse in index expresii, nu doar coloane ale unei tabele:

CREATE INDEX elevi_idx3

ON carti(UPPER(nume), UPPER(prenume))

Pentru a sterge un index folositi comanda DROP INDEX. Indecsii pot fi adaugati si stersi in orice moment fara a afecta tabela pe care o indexeaza in nici un fel, ei fiind fizic si logic independenti de tabela pe care o indexeaza. Totusi, atunci cand veti sterge o tabela, se vor sterge automat toti indecsii definiti pe tabela respectiva.

Odata creat un index, nu mai este necesara nici o interventie, acesta fiind actualizat automat dupa fiecare modificare efectuata asupra tabelei. De asemenea indexul va fi folosit automat in interogari care pot castiga de pe urma folosirii sale.

Un index definit pe o coloana care face parte dintr-o conditie de join, poate duce la cresterea semnificativa a vitezei de executare a join-ului respectiv.

Asadar, este indicata crearea unui index atunci cand:

coloana care se indexeaza contine o plaja mare de valori

coloana care se indexeaza contine multe valori nule (valorile nule nu sunt incluse in index)

una sau mai multe coloane sunt frecvent folosite impreuna in clauza WHERE sau in conditiile de join.

Tabela este mare si majoritatea interogarilor returneaza un numar mic de linii din aceasta tabela ( din numarul total de inregistrari)

Cand NU este indicat sa creati un index? Atunci cand:

tabela este mica, in acest caz cautarea secventiala este acceptabila

Coloanele nu sunt foarte des folosite in clauza WHERE a interogarilor

majoritatea interogarilor returneaza un numar mare de inregistrari (mai mult de din numarul total de inregistrari)

se efectueaza multe operatii de inserare, stergere sau modificare asupra tabelei. Dupa fiecare astfel de operatie sistemul trebuie sa actualizeze indexul, operatie consumatoare de timp

Coloanele indexate sunt referite cel mai ades ca parte a unor expresii.



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 1285
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved