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.
Diferență între Clustered și Non-clustered Index
Clustered vs Indicele non-cluster

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

Exemplu de index grupat

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)

Exemplu de index non-cluster

Următoarea interogare va fi preluată mai rapid în comparație cu indexul grupat.

SELECT Product ID, OrderQty
FROM SalesData
WHERE ProductID = 714

Exemplu de index non-cluster

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.