Cluster vs Non Cluster Index
Index är mycket viktiga i alla databaser. De används för att förbättra prestandan för att hämta data från tabeller. De är logiskt och fysiskt oberoende av data i de tillhörande tabellerna. Därför kan index släppas, återskapas och byggas om utan att data i bastabellerna påverkas. Oracle-servern kan automatiskt underhålla sina index utan inblandning av en DBA, när de relaterade tabellerna infogas, uppdateras och raderas. Det finns flera indextyper. Här är några av dem.
1. B-trädindex
2. Bitmappsindex
3. Funktionsbaserade index
4. Omvänd nyckelindex
5. B-trädklusterindex
Vad är ett icke-klusterindex?
Från ovanstående indextyper är följande icke-klustrade index.
• B-tree index
• Bitmappsindex
• Funktionsbaserat index
• Omvänd nyckelindex
B-trädindex är den mest använda indextypen av databaser. Om CREATE INDEX-kommandot utfärdas på databasen, utan att ange en typ, skapar Oracle-servern ett b-trädindex. När ett b-trädindex skapas på en specifik kolumn, lagrar oracle-servern kolumnens värden och behåller en referens till den faktiska raden i tabellen.
Bitmappsindex skapas när kolumndata inte är särskilt selektiva. Det betyder att kolumndata har en låg kardinalitet. Dessa är speciellt utformade för datalager, och det är inte bra att använda bitmappsindex på mycket uppdateringsbara eller transaktionstabeller.
Funktionella index kommer från Oracle 8i. Här används en funktion i den indexerade kolumnen. Därför, i ett funktionsindex, sorteras kolumndata inte på norm alt sätt. Den sorterar kolumnernas värden efter att ha tillämpat funktionen. Dessa är mycket användbara när WHERE-stängningen av urvalsfrågan används som en funktion.
Omvänd nyckelindex är en mycket intressant indextyp. Låt oss anta att en kolumn innehåller många unika strängdata som 'cityA', 'cityB', 'cityC'…etc. Alla värden har ett mönster. De fyra första tecknen är desamma och nästa delar ändras. Så när REVERSE nyckelindex skapas på den här kolumnen, kommer Oracle att vända strängen och återställa den i ett b-trädindex.
Ovannämnda indextyper är ICKE-KLUSTRERADE index. Det betyder att indexerad data lagras utanför tabellen och en sorterad referens till tabellen behålls.
Vad är ett Clustered Index?
Klustrade index är en speciell typ av index. Den lagrar data enligt sättet att lagra tabelldata fysiskt. Så det kan inte finnas många klustrade index för en tabell. En tabell kan bara ha ett klustrat index.
Vad är skillnaden mellan klustrade och icke-klustrade index?
1. Tabell kan bara ha ett klustrat index, men det kan finnas upp till 249 icke-klustrade index i en tabell.
2. Klustrat index skapas automatiskt när en primärnyckel skapas, men ett icke-klustrat index skapas när en unik nyckel skapas.
3. Den logiska ordningen för det klustrade indexet matchar den fysiska ordningen för tabelldata, men i icke-klustrade index gör det det inte.