Cluster vs Non Cluster Index
Indekser er meget vigtige i enhver database. De bruges til at forbedre ydeevnen for 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 vedligeholde sine indekser uden involvering af en DBA, når de relaterede tabeller indsættes, opdateres og slettes. Der er flere indekstyper. Her er nogle af dem.
1. B-træindekser
2. Bitmap-indekser
3. Funktionsbaserede indekser
4. Omvendt nøgleindeks
5. B-træklyngeindekser
Hvad er et ikke-klyngeindeks?
Fra ovenstående indekstyper er følgende ikke-klyngede indekser.
• B-træindeks
• Bitmapindeks
• Funktionsbaseret indeks
• Omvendt nøgleindeks
B-træindekser er den mest udbredte indekstype af databaser. Hvis CREATE INDEX-kommandoen udsendes på databasen uden at angive en type, opretter Oracle-serveren et b-træindeks. Når et b-træ-indeks oprettes på en specifik kolonne, gemmer oracle-serveren værdierne af kolonnen og beholder en reference til den faktiske række i tabellen.
Bitmap-indekser oprettes, når kolonnedataene ikke er særlig selektive. Det betyder, at kolonnedataene har en lav kardinalitet. Disse er specielt designet til datavarehuse, og det er ikke godt at bruge bitmap-indekser på meget opdaterbare eller transaktionstabeller.
Funktionelle indekser kommer fra Oracle 8i. Her bruges en funktion i den indekserede kolonne. I et funktionelt indeks sorteres kolonnedata derfor ikke på normal vis. Den sorterer værdierne af kolonnerne efter anvendelse af funktionen. Disse er meget nyttige, når WHERE-lukningen af den valgte forespørgsel bruges som en funktion.
Indekser med omvendt nøgle 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 er ændret. Så når REVERSE nøgleindeks oprettes på denne kolonne, vil Oracle vende strengen og gendanner den i et b-træindeks.
Ovennævnte indekstyper er IKKE-KLYNGEDE indekser. Det betyder, at indekserede data gemmes uden for tabellen, og en sorteret reference til tabellen bevares.
Hvad er et Clustered Index?
Klyngede indekser er en speciel type indekser. Den gemmer data i overensstemmelse med måden at lagre tabeldata på fysisk. Så der kan ikke være mange klyngede indekser for en tabel. Én tabel kan kun have ét klynget indeks.
Hvad er forskellen mellem grupperede og ikke-klyngede indekser?
1. Tabel kan kun have ét klynget indeks, men der kan være op til 249 ikke-klyngede indekser i én tabel.
2. Klynget indeks oprettes automatisk, når en primær nøgle oprettes, men et ikke-klynget indeks oprettes, når en unik nøgle oprettes.
3. Den logiske rækkefølge af det klyngede indeks stemmer overens med den fysiske rækkefølge af tabeldataene, men i ikke-klyngede indekser gør den det ikke.