Index (baza de date)
În acest termen, există alte utilizări, vezi. Index.
Unele baze de date extind capacitățile de introducerea posibilității de a crea indici pe coloane indexează reprezentări [1] sau indici pe expresii. [2] De exemplu, indicele poate fi creat prin expresia superioară (last_name) și, respectiv, stoca trimiteri la cheia care valoarea câmpului este literă mare last_name. În plus, indicii pot fi declarate ca fiind unic si ca nu este unică. Se pune în aplicare o constrângere index unic pe masă, cu excepția capacitatea de a insera valori duplicate.
Există două tipuri de indici: grupate și non-cluster. Dacă există un tabel de indice de grup rânduri sunt ordonate după valoarea cheii de index. Dacă tabelul nu are un index cluster, masa se numește o grămadă de [3]. Indexul creat pentru un tabel care conține doar indicii la intrările din tabelul de non-cluster. indicele grupată poate fi doar una pentru fiecare masă, dar fiecare tabel poate avea mai multe indicii diferite non-cluster, fiecare dintre care definește propria ordine a înregistrărilor.
Indecșii pot fi implementate în diverse structuri. Cel mai adesea upotrebimo B * copac. A B + copac. B-arbori și hash.
Secvența de coloane într-un indice compozit
Secvența în care coloanele sunt prezentate în indicele compozit este destul de important. Faptul este că, pentru a obține un set de date la cerere, care afectează doar coloana prima indexate, puteți. Cu toate acestea, în majoritatea DBMS imposibil sau ineficient să se obțină date numai cu privire la al doilea si coloanele indexate (fără limitări prima coloană).
indicii sunt, de obicei create pentru performanțe optime de interogări, pe coloanele de masă, care sunt frecvent utilizate în interogări. Pentru un singur tabel poate avea mai multe indicii. Cu toate acestea, creșterea numărului de indici încetinește adăuga, actualiza, șterge rânduri dintr-un tabel, deoarece este necesar să se actualizeze indicii înșiși. În plus, indicii au memorie suplimentară, astfel încât înainte de a crea index, asigurați-vă că câștigurile planificate în performanța de interogare va depăși costul suplimentar al resurselor informatice pe suport de index.
Indexuri sunt utile pentru multe aplicații, dar sunt impuse restricții de utilizare a acestora. Luați următoarea interogare SQL:
SELECT first_name de la oameni UNDE last_name = 'Frankenstein'; .
Pentru a efectua o astfel de solicitare, fără o bază de date index este de a verifica last_name câmp în fiecare rând (acest mecanism este cunoscut sub numele de „căutare completă“ sau „scanare completă de masă“ poate fi afișat în termeni de cuvânt natural). Atunci când se utilizează un indice de bază de date, pur și simplu trece prin B-copac până când găsește intrarea „Frankenstein“. Acest pasaj necesită mult mai puține resurse decât o căutare exhaustivă a tabelului.
Acum, să ia această interogare:
SELECT EMAIL_ADDRESS de la clienți UNDE EMAIL_ADDRESS LIKE '%@yahoo.com'; .
Această solicitare trebuie să găsim toți clienții ale căror e-mail se termină cu @ yahoo.com. Cu toate acestea, chiar și în cazul în care coloana EMAIL_ADDRESS un index, baza de date va utiliza în continuare o căutare exhaustivă a tabelului. Acest lucru se datorează faptului că indicii se bazează pe presupunerea că cuvintele / caracterele merg de la stânga la dreapta. Folosind caracterul wildcard la începutul căutării mele pentru a exclude posibilitatea utilizării bazei de căutare pentru B-copac. Această problemă poate fi rezolvată prin crearea unui revers suplimentar expresie index (EMAIL_ADDRESS) și formarea speciei cerere:
EMAIL_ADDRESS SELECT FROM clienti UNDE inversa (EMAIL_ADDRESS) LIKE inversă ( '% @ yahoo.com'); .
În acest caz, caracterul wildcard va apărea în poziția din dreapta-mai (moc.oohay@%), care nu exclude utilizarea unui indice de pe verso (EMAIL_ADDRESS).
Indexul sparse (în engleză indicele rar.) În baza de date - este un fișier cu o secvență de perechi de chei și indicii. [4] Fiecare cheie în indexul rarefiată, spre deosebire de indicele dens. Acesta este asociat cu un anumit pointer la un bloc în fișierul de date sortat. Ideea de a folosi indicele de venit, deoarece bazele de date moderne sunt prea masive pentru a încăpea în memoria principală. de obicei, vom împărți datele în blocuri și plasează datele din blocul de memorie de bloc. Cu toate acestea, căutarea în înregistrările de baze de date pot fi consumatoare de timp. Pe de altă parte, indicele de fișiere de index sau un bloc de date este mult mai mic bloc pot încăpea în buffer-ul de memorie principal, ceea ce mărește înregistrarea vitezei de căutare. Din moment ce cheile sunt sortate, puteți utiliza binar de căutare. În indicii grupat cu duplicat chei puncte de index rare la cel mai scăzut cheia în fiecare bloc.