Ce este un index?
Un index este o cheie construită dintr-una sau mai multe coloane din baza de date care accelerează preluarea rândurilor din tabel sau din vizualizare. Această cheie ajută o bază de date precum Oracle, SQL Server, MySQL etc. să găsească rapid rândul asociat valorilor cheii.
Două tipuri de indici sunt:
- Index clusterizat
- Index non-grupat
În acest tutorial, veți învăța:
- Ce este un index?
- Ce este un index clusterizat?
- Ce este indicele non-grupat?
- Caracteristica indicelui grupat
- Caracteristicile indexurilor non-grupate
- Un exemplu de index grupat
- Un exemplu de index non-grupat
- Diferențe între indicele grupat și indicele nonglomerat
- Avantajele indexului grupat
- Avantajele indexului non-grupat
- Dezavantaje ale indexului grupat
- Dezavantaje ale indexului non-grupat
Ce este un index clusterizat?
Indicele cluster este un tip de index care sortează rândurile de date din tabel pe valorile lor cheie. În baza de date, există un singur index grupat pe tabel.
Un index grupat definește ordinea în care datele sunt stocate în tabel, care pot fi sortate într-un singur mod. Deci, poate exista un singur index clusterizat pentru fiecare tabel. Într-un RDBMS, de obicei, cheia principală vă permite să creați un index grupat pe baza acelei coloane specifice.
Ce este indicele non-grupat?
Un index non-cluster stochează datele la o locație și indicii la o altă locație. Indexul conține indicii către locația datelor respective. Un singur tabel poate avea mai mulți indici ne-grupați, deoarece un index din indexul non-grupat este stocat în locuri diferite.
De exemplu, o carte poate avea mai mult de un index, unul la început care afișează conținutul unei unități de carte în timp ce al doilea index arată indexul termenilor în ordine alfabetică.
Un indice de non-cluster este definit în câmpul de neordonare a tabelului. Acest tip de metodă de indexare vă ajută să îmbunătățiți performanța interogărilor care utilizează chei care nu sunt atribuite ca cheie primară. Un index non-cluster vă permite să adăugați o cheie unică pentru un tabel.
DIFERENȚA CHEIE
- Indicele cluster este un tip de index care sortează rândurile de date din tabel pe valorile lor cheie, în timp ce indexul non-cluster stochează datele la o locație și indicii la o altă locație.
- Indexul clusterizat stochează paginile de date în nodurile frunze ale indexului, în timp ce metoda indexului non-cluster nu stochează niciodată paginile de date în nodurile frunze ale indexului.
- Indexul cluster nu necesită spațiu suplimentar pe disc, în timp ce indexul non-cluster necesită spațiu suplimentar pe disc.
- Indicele cluster oferă acces mai rapid la date, pe de altă parte, indexul non-cluster este mai lent.
Caracteristica indicelui grupat
- Stocare de date implicită și sortată
- Folosiți doar una sau mai multe coloane pentru un index
- Vă ajută să stocați date și indexați împreună
- Fragmentare
- Operațiuni
- Scanare index indexată și căutare index
- Căutare cheie
Caracteristicile indexurilor non-grupate
- Stocați numai valorile cheie
- Indicații către rândurile Heap / Index clusterizate
- Permite accesul secundar la date
- Treceți la date
- Operații de scanare index și căutare index
- Puteți crea un index non-grupat pentru un tabel sau o vizualizare
- Fiecare rând de index din indexul nonclustered stochează valoarea cheii nonclustered și un localizator de rânduri
Un exemplu de index grupat
În exemplul de mai jos, SalesOrderDetailID este indexul grupat. Exemplu de interogare pentru recuperarea datelor
SELECT CarrierTrackingNumber, UnitPriceFROM SalesDataWHERE SalesOrderDetailID = 6
Un exemplu de index non-grupat
În exemplul de mai jos, se creează un index neglobat pe OrderQty și ProductID după cum urmează
CREATE INDEX myIndex ONSalesData (ProductID, OrderQty)
Următoarea interogare va fi recuperată mai rapid în comparație cu indexul grupat.
SELECT Product ID, OrderQtyFROM SalesDataWHERE ProductID = 714
Diferențe între indicele grupat și indicele nonglomerat
Parametrii | Adunate | Ne-grupate |
---|---|---|
Utilizați pentru | Puteți sorta înregistrările și stoca fizic indexul grupat în memorie conform comenzii. | Un index non-cluster vă ajută să creați o ordine logică pentru rândurile de date și să utilizați indicatori pentru fișierele de date fizice. |
Metoda de stocare | Vă permite să stocați pagini de date în nodurile frunze ale indexului. | Această metodă de indexare nu stochează niciodată pagini de date în nodurile frunze ale indexului. |
mărimea | Dimensiunea indexului grupat este destul de mare. | Dimensiunea indexului non-cluster este mică în comparație cu indexul clusterizat. |
Accesarea datelor | Mai repede | Mai lent în comparație cu indicele grupat |
Spațiu suplimentar pe disc | Nu este necesar | Necesar pentru a stoca indexul separat |
Tipul cheii | În mod implicit, cheile principale ale tabelului sunt un index grupat. | Poate fi folosit cu constrângere unică pe masă, care acționează ca o cheie compusă. |
Caracteristica principală | Un index grupat poate îmbunătăți performanțele de recuperare a datelor. | Ar trebui să fie creat pe coloane care sunt utilizate în îmbinări. |
Avantajele indexului grupat
Avantajele / beneficiile indexului grupat sunt:
- Indexii grupați sunt o opțiune ideală pentru interval sau grupare cu interogări max, min, tip cont
- În acest tip de index, o căutare poate merge direct la un anumit punct din date, astfel încât să puteți continua să citiți secvențial de acolo.
- Metoda indexului clusterizat folosește mecanismul de localizare pentru a localiza intrarea indexului la începutul unui interval.
- Este o metodă eficientă pentru căutarea intervalului atunci când este solicitat un interval de valori ale cheilor de căutare.
- Vă ajută să minimizați transferurile de pagini și să maximizați accesările în cache.
Avantajele indexului non-grupat
Pro-urile utilizării indexului non-cluster sunt:
- Un index non-cluster vă ajută să extrageți rapid datele din tabelul bazei de date.
- Vă ajută să evitați costurile generale asociate cu indexul grupat
- Un tabel poate avea mai mulți indici ne-grupați în RDBMS. Deci, poate fi folosit pentru a crea mai multe indexuri.
Dezavantaje ale indexului grupat
Iată, dezavantaje / dezavantaje ale utilizării indexului grupat:
- O mulțime de inserții în ordine non-secvențială
- Un index grupat creează o mulțime de divizări de pagini constante, care includ pagini de date, precum și pagini de index.
- Lucru suplimentar pentru SQL pentru inserții, actualizări și ștergeri.
- Un index clusterizat necesită mai mult timp pentru actualizarea înregistrărilor atunci când câmpurile din indexul clusterizat sunt modificate.
- Nodurile frunze conțin în mare parte pagini de date în indexul grupat.
Dezavantaje ale indexului non-grupat
Iată, dezavantaje / dezavantaje ale utilizării indexului non-cluster:
- Un index non-cluster vă ajută să stocați datele într-o ordine logică, dar nu permite sortarea rândurilor de date fizic.
- Procesul de căutare a indexului non-cluster devine costisitor.
- De fiecare dată când cheia de clusterizare este actualizată, este necesară o actualizare corespunzătoare pentru indexul non-cluster, deoarece stochează cheia de clusterizare.