Skillnad mellan Clustered och icke-klustrade index
Nyckelskillnad mellan Clustered och Non-clustered Index
- Ett klusterindex är en typ av index som sorterar dataraderna 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 indexets bladnoder, medan metoden Non-clustered index aldrig lagrar datasidor i indexets bladnoder.
- Klusterindexet kräver inte ytterligare diskutrymme, medan det icke-klustrade indexet kräver ytterligare diskutrymme.
- Cluster index ger snabbare dataåtkomst, å andra sidan är det icke-klustrade indexet långsammare.
Vad är ett index?
Ett index är en nyckel byggd från en eller flera kolumner i databasen som snabbar upp hämtningen av rader från tabellen eller vyn. Denna nyckel hjälper en databas som Oracle, SQL Server, MySQL, etc. för att snabbt hitta raden associerad med nyckelvärden.
Två typer av index är:
- Clustered Index
- Icke-Clustered Index
Vad är en Clustered index?
Cluster index är en typ av index som sorterar dataraderna i tabellen på deras nyckelvärden. I databasen finns det bara ett klustrat index per tabell.
Ett klustrat index definierar i vilken ordning data lagras i tabellen som bara kan sorteras på ett sätt. Så det kan bara finnas ett enda klustrat index för varje tabell. I en RDBMS tillåter primärnyckeln dig vanligtvis att skapa ett klustrat index baserat på den specifika kolumnen.
Vad är icke-klustrade index?
Ett icke-klustrat index lagrar data på en plats och index på en annan plats. Indexet innehåller pekare till platsen för dessa data. En enskild 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, ett i början som visar innehållet i en bok enhetsmässigt medan det andra indexet visar termindexet i alfabetisk ordning.
Ett icke-klustringsindex definieras i tabellens icke-ordningsfält. Den här typen av indexeringsmetod hjälper dig att förbättra prestandan för frågor som använder nycklar som inte är tilldelade som en primärnyckel. Ett icke-klustrat index låter dig lägga till en unik nyckel för en tabell.
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 index tillsammans
- Fragmentering
- Operationer
- Clustered index scan och index search
- Nyckelsökning
Egenskaper för icke-klustrade index
- Lagra endast nyckelvärden
- Pekare till högen/Clustered Index rader
- Tillåter sekundär dataåtkomst
- Bro till data
- Operaindexavsökning och indexsökning
- Du kan skapa ett icke-klustrat index för en tabell eller vy
- Varje indexrad i det icke-klustrade indexet lagrar det icke-klustrade nyckelvärdet och en radlokalisering
Clustered vs icke-klustrade index i SQL: nyckelskillnader
parametrar | Clustered | Icke-klustrade |
---|---|---|
Använda för | Du kan sortera posterna och lagra klustrade index fysiskt i minnet enligt beställningen. | Ett icke-klustrat 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 indexets bladnoder. | Denna indexeringsmetod lagrar aldrig datasidor i indexets bladnoder. |
Storlek | Storleken på det klustrade indexet är ganska stort. | Storleken på det icke-klustrade indexet är litet jämfört med det klustrade indexet. |
Dataåtkomst | Snabbare | Långsammare jämfört med det klustrade indexet |
Ytterligare diskutrymme | Inte nödvändig | Krävs för att lagra indexet separat |
Typ av nyckel | Som standard är bordets primära tangenter en Clustered Index. | Den kan användas med unika begränsningar på bordet som fungerar som en sammansatt nyckel. |
Huvud funktion | Ett klustrat index kan förbättra prestandan för datahämtning. | Den ska skapas på kolumner som används i kopplingar. |
Ett exempel på ett klustrat index
I exemplet nedan är SalesOrderDetailID det klustrade indexet. Exempelfråga för att hämta data
SELECT CarrierTrackingNumber, UnitPrice FROM SalesData WHERE SalesOrderDetailID = 6
Ett exempel på ett icke-klustrat index
I exemplet nedan skapas ett icke-klusterat index på OrderQty och ProductID enligt följande
CREATE INDEX myIndex ON SalesData (ProductID, OrderQty)
Följande fråga kommer att hämtas snabbare jämfört med det klustrade indexet.
SELECT Product ID, OrderQty FROM SalesData WHERE ProductID = 714
Fördelar med Clustered Index
Fördelarna/fördelarna med det klustrade indexet är:
- Clustered-index är ett idealiskt alternativ för intervall eller gruppera efter med max, min, count typ frågor
- I den här typen av index kan en sökning gå direkt till en specifik punkt i data så att du kan fortsätta läsa sekventiellt därifrån.
- Clustered index-metoden använder platsmekanism för att hitta indexpost i början av ett intervall.
- Det är en effektiv metod för intervallsökningar när ett intervall av söknyckelvärden efterfrågas.
- Hjälper dig att minimera sidöverföringar och maximera cacheträffarna.
Fördelar med icke-klustrade index
Fördelar med att använda icke-klustrade index är:
- Ett icke-klustringsindex hjälper dig att snabbt hämta data från databastabellen.
- Hjälper dig att undvika omkostnader förknippade med det klustrade indexet
- En tabell kan ha flera icke-klustrade index i RDBMS. Så den 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 inlägg i icke-sekventiell ordning
- Ett klustrat index skapar massor av konstanta siddelningar, som inkluderar datasida såväl som indexsidor.
- Extra arbete för SQL för infogningar, uppdateringar och borttagningar.
- Ett klustrat index 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-klustrade index
Här är nackdelar/nackdelar med att använda icke-klustrade index:
- Ett icke-klustrat index hjälper dig att lagra data i en logisk ordning men tillåter inte att sortera datarader fysiskt.
- Uppslagsprocessen på icke-klustrade index blir kostsam.
- Varje gång klustringsnyckeln uppdateras krävs en motsvarande uppdatering av det icke-klustrade indexet eftersom det lagrar klustringsnyckeln.