Forskel mellem Cluster og Non Cluster Index

Cluster vs Non Cluster Index

Indekser er meget vigtige i enhver database. De bruges til at forbedre ydelsen til at hente data fra tabeller. De er logisk og fysisk uafhængige af dataene i de tilknyttede tabeller. Derfor kan indekser slippes, genskabes og genopbygges uden at påvirke dataene i basistabellerne. Oracle-server kan automatisk opretholde sine indekser uden nogen involvering af en DBA, når de relaterede tabeller indsættes, opdateres og slettes. Der er flere indeksstyper. Her er nogle af dem.

1. B-træindekser

2. Bitmap-indekser

3. Funktionsbaserede indekser

4. Omvendte nøgleindekser

5. B-træ klyngeindekser

Hvad er et ikke-klyngeindeks?

Fra de ovenstående indekstyper er følgende ikke-grupperede indekser.

• B-træindeks

• Bitmap-indeks

• Funktionsbaseret indeks

• Omvendte nøgleindekser

B-træindekser er den mest anvendte indekstype af databaser. Hvis kommandoen CREATE INDEX udstedes i databasen, uden at specificere en type, opretter Oracle-serveren et b-træindeks. Når der oprettes et b-træindeks i en bestemt kolonne, gemmer oracle-serveren værdierne for kolonnen og holder en henvisning til den faktiske række i tabellen.

Bitmap-indekser oprettes, når kolonnedataene ikke er meget selektive. Det betyder, at kolonnedataene har en lav kardinalitet. Disse er specielt designet til datalager, og det er ikke godt at bruge bitmap-indekser på meget opdaterbare eller transaktionsborde.

Funktionelle indekser kommer fra Oracle 8i. Her bruges en funktion i den indekserede kolonne. I et funktionelt indeks sorteres kolonnedata derfor ikke på normal måde. Det sorterer værdierne for kolonnerne efter anvendelse af funktionen. Disse er meget nyttige, når funktionen WHERE-lukning af den valgte forespørgsel bruges.

Omvendte nøgleindekser er en meget interessant indekstype. Lad os antage, at en kolonne indeholder mange unikke strengdata som 'cityA', 'cityB', 'cityC' ... osv. Alle værdier har et mønster. De første fire tegn er de samme, og de næste dele ændres. Så når REVERSE nøgleindeks oprettes i denne kolonne, vil Oracle vende strengen og gendanne den i et b-træindeks.

Ovennævnte indekstyper er IKKE-KLUSTEREDE indekser. Det betyder, at indekserede data gemmes uden for tabellen, og en sorteret henvisning til tabellen opbevares. 

Hvad er et klyngeindeks?

Clustered indexes er en speciel type indekser. Det gemmer data i henhold til den måde, hvorpå man lagrer tabeldata fysisk. Så der kan ikke være mange grupperede indekser til en tabel. En tabel kan kun have et samlet indeks.

Hvad er forskellen mellem indekserede grupper og ikke-grupperede indekser?

1. Tabel kan kun have et samlet indeks, men der kan være op til 249 ikke-grupperede indekser i en tabel.

2. Clustered index oprettes automatisk, når der oprettes en primær nøgle, men et ikke-clustered index oprettes, når der oprettes en unik nøgle.

3. Den logiske rækkefølge på det klyngeindeks stemmer overens med den fysiske rækkefølge af tabeldataene, men i ikke-klyngerindekser stemmer det ikke.