Vad är ett index?
Ett index är en nyckel byggd från en eller flera kolumner i databasen som gör att det blir snabbare att hämta rader från tabellen eller vyn. Den här nyckeln hjälper en databas som Oracle, SQL Server, MySQL, etc. att snabbt hitta raden som är associerad med nyckelvärden.
Två typer av index är:
- Clustered Index
- Icke-grupperat index
I den här handledningen lär du dig:
- Vad är ett index?
- Vad är ett grupperat index?
- Vad är icke-grupperat index?
- Kännetecknande för Clustered Index
- Egenskaper för icke-grupperade index
- Ett exempel på ett grupperat index
- Ett exempel på ett icke-grupperat index
- Skillnader mellan Clustered Index och NonClustered Index
- Fördelar med Clustered Index
- Fördelar med icke-grupperat index
- Nackdelar med Clustered Index
- Nackdelar med icke-grupperat index
Vad är ett grupperat index?
Klusterindex är en typ av index som sorterar datorraderna i tabellen på deras nyckelvärden. I databasen finns det bara ett klusterindex per tabell.
Ett klusterindex definierar den ordning i vilken data lagras i tabellen som bara kan sorteras på ett sätt. Så det kan finnas ett enda klusterindex för varje tabell. I en RDBMS tillåter vanligtvis den primära nyckeln att du skapar ett klusterindex baserat på den specifika kolumnen.
Vad är icke-grupperat index?
Ett icke-grupperat index lagrar data på en plats och index på en annan plats. Indexet innehåller pekare till platsen för dessa data. En enda tabell kan ha många icke-klustrade index eftersom ett index i det icke-klustrade indexet lagras på olika platser.
Till exempel kan en bok ha mer än ett index, en i början som visar innehållet i en bokenhetsmässigt medan det andra indexet visar termerindex i alfabetisk ordning.
Ett icke-klusterindex definieras i tabellen utan ordning. Denna typ av indexeringsmetod hjälper dig att förbättra prestanda för frågor som använder nycklar som inte tilldelas som en primär nyckel. Ett icke-grupperat index låter dig lägga till en unik nyckel för en tabell.
NYCKELSKILL
- Klusterindex är en typ av index som sorterar datorraderna i tabellen på deras nyckelvärden medan det icke-klustrade indexet lagrar data på en plats och index på en annan plats.
- Clustered index lagrar datasidor i bladets noder i indexet medan Icke-clustered index-metoden lagrar aldrig datasidor i indexets bladnoder.
- Klusterindex kräver inte ytterligare diskutrymme medan det icke-klustrade indexet kräver ytterligare diskutrymme.
- Klusterindex erbjuder snabbare åtkomst till data, å andra sidan är icke-klusterindex långsammare.
Kännetecknande för Clustered Index
- Standard- och sorterad datalagring
- Använd bara en eller flera kolumner för ett index
- Hjälper dig att lagra data och indexera tillsammans
- Splittring
- Operationer
- Clustered index scan och index search
- Key Lookup
Egenskaper för icke-grupperade index
- Spara endast nyckelvärden
- Pekare till Heap / Clustered Index-rader
- Tillåter sekundär datatillgång
- Överbrygga till data
- Funktioner för indexsökning och indexsökning
- Du kan skapa ett oklasserat index för en tabell eller vy
- Varje indexrad i det icke-klusterade indexet lagrar det icke-klusterade nyckelvärdet och en radlokalisator
Ett exempel på ett grupperat index
I exemplet nedan är SalesOrderDetailID det klustrade indexet. Exempelfråga för att hämta data
SELECT CarrierTrackingNumber, UnitPriceFROM SalesDataWHERE SalesOrderDetailID = 6
Ett exempel på ett icke-grupperat index
I exemplet nedan skapas ett icke-klustrat index på OrderQty och ProductID enligt följande
CREATE INDEX myIndex ONSalesData (ProductID, OrderQty)
Följande fråga kommer att hämtas snabbare jämfört med det klustrade indexet.
SELECT Product ID, OrderQtyFROM SalesDataWHERE ProductID = 714
Skillnader mellan Clustered Index och NonClustered Index
Parametrar | Kluster | Icke-grupperade |
---|---|---|
Använda för | Du kan sortera posterna och lagra grupperade index fysiskt i minnet enligt beställningen. | Ett icke-grupperat index hjälper dig att skapa en logisk ordning för datarader och använder pekare för fysiska datafiler. |
Lagringsmetod | Låter dig lagra datasidor i bladnoderna i indexet. | Den här indexeringsmetoden lagrar aldrig datasidor i indexets bladnoder. |
Storlek | Storleken på det klustrade indexet är ganska stor. | Storleken på det icke-klustrade indexet är litet jämfört med det klustrade indexet. |
Åtkomst till data | Snabbare | Långsammare jämfört med det klustrade indexet |
Ytterligare diskutrymme | Krävs inte | Krävs för att lagra index separat |
Typ av nyckel | Som standard är primära nycklar i tabellen ett grupperat index. | Den kan användas med unik begränsning på bordet som fungerar som en sammansatt nyckel. |
Huvud funktion | Ett klusterindex kan förbättra prestandan för datainhämtning. | Den ska skapas på kolumner som används i sammanfogningar. |
Fördelar med Clustered Index
Fördelarna med / fördelarna med det klustrade indexet är:
- Klusterindex är ett perfekt alternativ för intervall eller grupp efter med max-, min-, räkne-typfrågor
- I den här typen av index kan en sökning gå direkt till en viss punkt i data så att du kan fortsätta läsa sekventiellt därifrån.
- Clustered index-metoden använder lokaliseringsmekanism för att lokalisera indexinmatning i början av ett intervall.
- Det är en effektiv metod för intervallsökningar när ett intervall med söknyckelvärden begärs.
- Hjälper dig att minimera sidöverföringar och maximera cacheträffar.
Fördelar med icke-grupperat index
Fördelar med att använda icke-grupperat index är:
- Ett icke-klusterindex hjälper dig att hämta data snabbt från databastabellen.
- Hjälper dig att undvika allmänna kostnader som är förknippade med det klustrade indexet
- En tabell kan ha flera icke-grupperade index i RDBMS. Så det kan användas för att skapa mer än ett index.
Nackdelar med Clustered Index
Här är nackdelar / nackdelar med att använda klustrade index:
- Massor av skär i icke-sekventiell ordning
- Ett klusterindex skapar massor av konstanta siduppdelningar, som inkluderar datasida samt indexsidor.
- Extra arbete för SQL för insatser, uppdateringar och raderingar.
- Ett klusterindex tar längre tid att uppdatera poster när fälten i det klustrade indexet ändras.
- Bladnoderna innehåller mestadels datasidor i det klustrade indexet.
Nackdelar med icke-grupperat index
Här är nackdelar / nackdelar med att använda icke-grupperat index:
- Ett icke-grupperat index hjälper dig att lagra data i en logisk ordning men tillåter inte att sortera datarader fysiskt.
- Sökningsprocess på icke-klustrat index blir dyrt.
- Varje gång klustringsnyckeln uppdateras krävs en motsvarande uppdatering av det icke-klustrade indexet eftersom det lagrar klusternyckeln.