Diferență între Clustered și index non-clustered
Diferența cheie între Clustered și Non-clustered Index
- Un index de cluster este un tip de index care sortează rândurile de date din tabel în funcție de valorile lor cheie, în timp ce indexul non-cluster stochează datele într-o locație și indicii într-o altă locație.
- Clusterindexul ed stochează pagini de date în nodurile frunză ale indexului, în timp ce metoda indexului non-cluster nu stochează niciodată pagini de date în nodurile frunză ale indexului.
- Indexul de cluster nu necesită spațiu suplimentar pe disc, în timp ce indexul fără cluster necesită spațiu suplimentar pe disc.
- Cluster indexul oferă acces mai rapid la date, pe de altă parte, indexul non-clustered este mai lent.

Ce este un index?
Un index este o cheie construită din una sau mai multe coloane din baza de date care accelerează preluarea rândurilor din tabel sau vizualizare. Această cheie ajută o bază de date ca Oracle, SQL Server, MySQL, etc. pentru a găsi rapid rândul asociat valorilor cheie.
Două tipuri de indici sunt:
- Clustered Index
- Nu-Clustered Index
Ce este a Clusterindexul ed?
Cluster index 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 per tabel.
Un index grupat definește ordinea în care datele sunt stocate în tabel, care poate fi sortat într-un singur mod. Deci, poate exista un singur index grupat pentru fiecare tabel. Într-un RDBMS, de obicei, cheia primară vă permite să creați un index grupat pe baza acelei coloane specifice.
Ce este indexul non-cluster?
Un index non-cluster stochează datele într-o locație și indicii într-o altă locație. Indexul conține indicatorii către locația acestor date. Un singur tabel poate avea mulți indecși non-cluster, deoarece un index în indexul non-cluster 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 index non-clustering este definit în câmpul de non-ordonare al 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.
Caracteristică Clustered Index
- Stocare de date implicită și sortată
- Utilizați doar una sau mai multe coloane pentru un index
- Vă ajută să stocați date și să indexați împreună
- Fragmentarea
- Operații
- Clusterscanarea indexului ed și căutarea indexului
- Căutare cheie
Caracteristicile indicilor non-cluster
- Stocați numai valorile cheie
- Indicatori către Heap/Clustered Rânduri de index
- Permite accesul la date secundare
- Punte către date
- Operascanarea indexului și căutarea indexului
- Puteți crea un index neclustrat pentru un tabel sau vizualizare
- Fiecare rând de index din indexul nonclustered stochează valoarea cheii nonclustered și un localizator de rând
Clustered vs index non-cluster în SQL: diferențe cheie
parametrii | Clustered | Negrupat |
---|---|---|
Utilizați pentru | Puteți sorta înregistrările și puteț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ă folosească pointeri 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 frunză ale indexului. |
Mărimea | Dimensiunea indexului grupat este destul de mare. | Mărimea indexului negrupat este mică în comparație cu indexul grupat. |
Accesarea datelor | Mai rapid | Mai lent în comparație cu indicele grupat |
Spațiu suplimentar pe disc | Nu este necesar | Este necesar să stocați indexul separat |
Tipul cheii | În mod implicit, cheile primare ale tabelului sunt a Clustered Index. | Poate fi folosit cu constrângeri unice pe tabel care acționează ca o cheie compusă. |
Caracteristica principală | Un index grupat poate îmbunătăți performanța regăsirii datelor. | Ar trebui să fie creat pe coloanele care sunt utilizate în îmbinări. |
Un exemplu de index grupat
În exemplul de mai jos, SalesOrderDetailID este indexul grupat. Exemplu de interogare pentru a prelua date
SELECT CarrierTrackingNumber, UnitPrice FROM SalesData WHERE SalesOrderDetailID = 6
Un exemplu de index non-cluster
În exemplul de mai jos, un index non-clusted este creat pe OrderQty și ProductID, după cum urmează
CREATE INDEX myIndex ON SalesData (ProductID, OrderQty)
Următoarea interogare va fi preluată mai rapid în comparație cu indexul grupat.
SELECT Product ID, OrderQty FROM SalesData WHERE ProductID = 714
Avantajele Clustered Index
Avantajele/beneficiile indexului grupat sunt:
- Clusterindecșii ed sunt o opțiune ideală pentru interval sau grupare cu interogări de tip max, min, numărare
- În acest tip de index, o căutare poate merge direct la un anumit punct al datelor, astfel încât să puteți continua să citiți secvențial de acolo.
- ClusterMetoda indexului ed folosește mecanismul de localizare pentru a localiza intrarea indexului la începutul unui interval.
- Este o metodă eficientă pentru căutări în intervale atunci când este solicitată o serie de valori cheie de căutare.
- Vă ajută să minimizați transferurile de pagini și să maximizați accesările în cache.
Avantajele indexului non-cluster
Avantajele utilizării indexului non-cluster sunt:
- Un index non-clustering vă ajută să preluați rapid datele din tabelul bazei de date.
- Vă ajută să evitați costul general asociat cu indexul grupat
- Un tabel poate avea mai mulți indecși non-cluster RDBMS. Deci, poate fi folosit pentru a crea mai mult de un index.
Dezavantaje ale Clustered Index
Iată dezavantajele/dezavantajele utilizării indexului grupat:
- O mulțime de inserții în ordine non-secvențială
- Un index grupat creează o mulțime de împărțiri constante de pagini, care includ pagini de date, precum și pagini de index.
- Munca suplimentara pentru SQL pentru inserări, actualizări și ștergeri.
- Un index grupat necesită mai mult timp pentru a actualiza înregistrările atunci când câmpurile din indexul grupat sunt modificate.
- Nodurile frunză conțin în cea mai mare parte pagini de date în indexul grupat.
Dezavantajele indexului non-cluster
Iată dezavantajele/dezavantajele utilizării indexului non-cluster:
- Un index non-cluster vă ajută să stocați datele într-o ordine logică, dar nu permite sortarea fizică a rândurilor de date.
- Procesul de căutare pe indexul non-cluster devine costisitor.
- De fiecare dată când cheia de clustering este actualizată, este necesară o actualizare corespunzătoare pe indexul non-cluster, deoarece stochează cheia de clustering.