Know Intuit, prelegere, de a crea și de a folosi indexurile

concepte de indexare

Acum, că aveți o idee despre structura indicelui, uita-te la unele dintre cele mai comune concepte de indexare. În această secțiune veți afla despre cheia de index, indicii unice, și tipurile de indici.

chei index

Se numește coloana cheie index sau coloanele care sunt folosite pentru a construi index. cheie Index - o valoare care vă permite să localizați rapid linia care conține datele de care aveți nevoie (cum ar fi indicele de articol [Index] element în carte, arătând spre un anumit subiect în text). Pentru a avea acces la liniile de date prin codul, trebuie să includă valoarea sau valorile cheii index pentru a oferi instrucțiunea SQL necesare unde. O metodă pentru realizarea acestui proces depinde de ce fel de un indice - simplu sau compus.

indici simpli


Fig. 17.4. indice de simplu

indicii compozit


Fig. 17.5. indicele compozit

Pentru interogări care includ un indice compozit, nu aveți nevoie pentru a pune toate cheile de index în instrucțiunea SQL propoziție WHERE, dar are sens să utilizeze mai mult de o cheie. De exemplu, în cazul în care indicele este creat pe coloane a, b și c unui tabel, accesul la acest indice se poate face folosind instrucțiunea SELECT. expresie care cuprinde (a și b și c), sau (a și b), sau. Desigur, utilizarea unor propuneri mai restrictive unde. conținând, de exemplu, exprimarea a și b și c. Acesta va oferi o performanță mai bună. Cel mai probabil, baza de date va fi citit de un număr mai mic de linii, deoarece liniile ar fi indicat mai precis. Dacă utilizați o și b, sau pur și simplu o. aceasta va fi inițiată de o scanare de index.

scanare de index apare deoarece criteriul de căutare corespunde mai mult de o intrare de index. În scanarea nodurile de scanare de index în indexul pentru citirea mai multe înregistrări de date. Mai mult decât atât, indicele corespunde doar parțial la valoarea selectată. De exemplu, în cazul în care indicele este creat pe coloanele a, b și c, după cum se indică în valoarea cerere numai pentru coloana a, care returnează toate liniile care îndeplinesc această valoare pentru toate valorile coloana b și c.

Deoarece coloana pe care este construit indexul sunt ordonate mod numeric, SQL Server interogare Optimizer poate determina intervalul de index de pagini care pot conține datele dorite. Dacă cunoscută pagina inițială și finală, sunt citite toate paginile care conțin valorile de date, apoi scanarea este executat pentru a selecta datele solicitate de date.

Tabelul locația clientului

Să presupunem că avem un tabel care conține informații despre locația clienților dvs. de companie. stat piloane (statul), țară (județ) și oraș (oraș), o structură B-arbore în următoarea ordine: stat, o țară, un oraș. Dacă interogarea în clauza WHERE este setat coloana de stat Texas (TX), indicele va fi utilizat. Dar, ca valoare de coloane țară și un oraș care nu sunt specificate în cerere, atunci indicele va returna un set de rânduri, pe baza tuturor intrările de index care conțin valoarea Texas, în coloana de stare. Pentru a citi indexul pagina de index este utilizat intervalul de scanare și paginile ulterioare de scanare de date bazate pe valorile coloanei de stat. pagini de index sunt citite succesiv în același mod ca și tabelul de scanare pentru a accesa paginile de date.

In cele mai multe cazuri, scanarea indicelui este suficient de eficient; dar dacă există acces la mai mult de 20 la sută din rânduri în tabel, cu atât mai eficient este tabelul de scanare în care tabelele sunt citite din toate liniile. Eficiența interogările care utilizează indexul depinde de modul în care utilizați indexul (a se vedea. „Utilizarea indecși“ de mai jos), precum și gradul de unicitate a indicelui (A se vedea secțiunea următoare.).

Unicitatea indicelui

Puteți specifica SQL Server ca index este unic sau nu este unică. Într-un index unic, fiecare valoare a cheii de index trebuie să fie unic. În indexul nonunique permise cheile de index duplicarea în tabelul de date. Eficiența depinde de o selectivitate index non-unic (selectivitate) a indicelui.

Un index unic

Un index unic conține doar o singură linie de date pentru fiecare cheie de index; cu alte cuvinte, valorile-cheie de index nu poate fi prezentă în mai mult de un indice de timp. Folosind un index unic va asigura că căutarea datelor solicitate necesită doar un singur IO suplimentar. SQL Server oferă un index unic pe coloane sau combinație de coloane care alcătuiesc cheia de index. SQL Server nu permite intrarea de valori-cheie duplicate într-o bază de date. Dacă încercați să faceți acest lucru, apare un mesaj de eroare. SQL Server creează un index unic pe masă întrebat dacă un primar constrangerea sau restricție unică. (Pe constrângerile cheie primară, și a vedea unice. „Crearea și folosirea defaults, restricții și reglementări“).

puteți face un index unic numai în cazul în care datele în sine este unic. În cazul în care datele dintr-o coloană nu are o proprietate unică, puteți crea în continuare un index unic. Folosind un indice compozit. De exemplu, o coloană de nume (nume de familie), nu poate fi unic, dar combinația dintre datele din această coloană coloane prenumele (numele) și al doilea prenume (patronimicul) poate forma un index unic pe masă.

Notă. Dacă încercați să inserați un rând într-un tabel, care dă valoarea cheii duplicat indicele în index unic, introducerea eșuează.