Clustered vs Non-clustered Index: Nøgleforskelle med eksempel

Indholdsfortegnelse:

Anonim

Hvad er et indeks?

Et indeks er en nøgle bygget fra en eller flere kolonner i databasen, der fremskynder at hente rækker fra tabellen eller visningen. Denne nøgle hjælper en database som Oracle, SQL Server, MySQL osv. Til hurtigt at finde rækken, der er knyttet til nøgleværdier.

To typer indekser er:

  • Klynget indeks
  • Ikke-grupperet indeks

I denne vejledning lærer du:

  • Hvad er et indeks?
  • Hvad er et klynget indeks?
  • Hvad er ikke-grupperet indeks?
  • Karakteristisk for grupperet indeks
  • Karakteristika for ikke-klyngede indekser
  • Et eksempel på et grupperet indeks
  • Et eksempel på et ikke-grupperet indeks
  • Forskelle mellem Clustered Index og NonClustered Index
  • Fordele ved grupperet indeks
  • Fordele ved ikke-grupperet indeks
  • Ulemper ved grupperet indeks
  • Ulemper ved ikke-grupperet indeks

Hvad er et klynget indeks?

Klyngeindeks er en type indeks, der sorterer datarækkerne i tabellen på deres nøgleværdier. I databasen er der kun et grupperet indeks pr. Tabel.

Et klynget indeks definerer rækkefølgen, i hvilken data gemmes i tabellen, som kun kan sorteres på én måde. Så der kan kun være et enkelt klyngedeks for hver tabel. I en RDBMS giver den primære nøgle dig normalt mulighed for at oprette et klynget indeks baseret på den specifikke kolonne.

Hvad er ikke-grupperet indeks?

Et ikke-klynget indeks gemmer dataene på et sted og indekser på et andet sted. Indekset indeholder henvisninger til placeringen af ​​disse data. En enkelt tabel kan have mange ikke-grupperede indekser, da et indeks i det ikke-grupperede indeks er gemt forskellige steder.

For eksempel kan en bog have mere end et indeks, et i begyndelsen, der viser indholdet af en bogsenhedsmæssigt, mens det andet indeks viser ordindekset i alfabetisk rækkefølge.

Et ikke-klyngende indeks er defineret i tabellen ikke-ordrer. Denne type indekseringsmetode hjælper dig med at forbedre udførelsen af ​​forespørgsler, der bruger nøgler, der ikke er tildelt som en primær nøgle. Et ikke-grupperet indeks giver dig mulighed for at tilføje en unik nøgle til en tabel.

Nøgleforskel

  • Klyngeindeks er en type indeks, der sorterer datarækkerne i tabellen på deres nøgleværdier, mens det ikke-klyngede indeks gemmer dataene på et sted og indekserer på et andet sted.
  • Clustered index gemmer datasider i bladets noder i indekset, mens ikke-clustered index-metoden aldrig gemmer datasider i bladets noder i indekset.
  • Klyngeindeks kræver ikke ekstra diskplads, mens det ikke-klyngede indeks kræver ekstra diskplads.
  • Klyngeindeks giver hurtigere adgang til data, på den anden side er ikke-klynget indeks langsommere.

Karakteristisk for grupperet indeks

  • Standard og sorteret datalagring
  • Brug kun en eller flere kolonner til et indeks
  • Hjælper dig med at gemme data og indeksere sammen
  • Fragmentering
  • Operationer
  • Clustered index scan og index search
  • Nøgleopslag

Karakteristika for ikke-klyngede indekser

  • Gem kun nøgleværdier
  • Pegepinde til rækker til bunke / grupperet indeks
  • Tillader sekundær dataadgang
  • Bro til dataene
  • Betjening af indeksscanning og indekssøgning
  • Du kan oprette et ikke-grupperet indeks til en tabel eller en visning
  • Hver indeksrække i det ikke-grupperede indeks gemmer den ikke-grupperede nøgleværdi og en rækkefinder

Et eksempel på et grupperet indeks

I eksemplet nedenfor er SalesOrderDetailID det klyngede indeks. Eksempel på forespørgsel for at hente data

SELECT CarrierTrackingNumber, UnitPriceFROM SalesDataWHERE SalesOrderDetailID = 6

Et eksempel på et ikke-grupperet indeks

I nedenstående eksempel oprettes et ikke-clusted-indeks på OrderQty og ProductID som følger

CREATE INDEX myIndex ONSalesData (ProductID, OrderQty)

Den følgende forespørgsel hentes hurtigere sammenlignet med det klyngede indeks.

SELECT Product ID, OrderQtyFROM SalesDataWHERE ProductID = 714

Forskelle mellem Clustered Index og NonClustered Index

Parametre Klynget Ikke-grupperet
Brugt til Du kan sortere posterne og gemme klyngede indekser fysisk i hukommelsen efter ordren. Et ikke-klynget indeks hjælper dig med at oprette en logisk rækkefølge for datarækker og bruger markører til fysiske datafiler.
Lagringsmetode Giver dig mulighed for at gemme datasider i indeksets bladnoder. Denne indekseringsmetode gemmer aldrig datasider i bladets noder i indekset.
Størrelse Størrelsen på det klyngede indeks er ret stor. Størrelsen på det ikke-grupperede indeks er lille sammenlignet med det grupperede indeks.
Adgang til data Hurtigere Langsommere sammenlignet med det klyngede indeks
Yderligere diskplads Ikke påkrævet Krævet for at gemme indekset separat
Type nøgle Som standard er primære nøgler til tabellen et grupperet indeks. Det kan bruges med en unik begrænsning på bordet, der fungerer som en sammensat nøgle.
Hovedfunktion Et klynget indeks kan forbedre ydeevnen ved datahentning. Det skal oprettes på kolonner, der bruges i sammenføjninger.

Fordele ved grupperet indeks

Fordelene / fordelene ved det klyngede indeks er:

  • Klyngede indekser er en ideel mulighed for rækkevidde eller gruppe efter med max, min, count type forespørgsler
  • I denne type indeks kan en søgning gå direkte til et bestemt punkt i data, så du kan fortsætte med at læse sekventielt derfra.
  • Clustered index-metoden bruger placeringsmekanisme til at finde indeksindtastning i starten af ​​et interval.
  • Det er en effektiv metode til områdesøgninger, når der anmodes om et interval af søgenøgleværdier.
  • Hjælper dig med at minimere sideoverførsler og maksimere cache-hits.

Fordele ved ikke-grupperet indeks

Fordele ved at bruge ikke-grupperet indeks er:

  • Et ikke-klyngende indeks hjælper dig med at hente data hurtigt fra databasetabellen.
  • Hjælper dig med at undgå de faste omkostninger forbundet med det klyngede indeks
  • En tabel kan have flere ikke-grupperede indekser i RDBMS. Så det kan bruges til at oprette mere end et indeks.

Ulemper ved grupperet indeks

Her er ulemper / ulemper ved at bruge klyngede indeks:

  • Masser af indsatser i ikke-sekventiel rækkefølge
  • Et klynget indeks skaber masser af konstante sidedelinger, som inkluderer dataside såvel som indeksider.
  • Ekstra arbejde for SQL til indsatser, opdateringer og sletninger.
  • Et klynget indeks tager længere tid at opdatere poster, når felterne i det klyngede indeks ændres.
  • Bladknudepunkterne indeholder for det meste datasider i det klyngede indeks.

Ulemper ved ikke-grupperet indeks

Her er ulemper / ulemper ved at bruge ikke-grupperet indeks:

  • Et ikke-klynget indeks hjælper dig med at gemme data i en logisk rækkefølge, men tillader ikke at sortere datarækker fysisk.
  • Opslagsproces på ikke-grupperet indeks bliver dyr.
  • Hver gang klyngenøglen opdateres, kræves der en tilsvarende opdatering af det ikke-klyngede indeks, da den gemmer klyngenøglen.