Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL-databas i Förhandsversion av Microsoft Fabric
Du kan skapa klustrade index i tabeller med hjälp av SQL Server Management Studio eller Transact-SQL. Med få undantag bör varje tabell ha ett grupperat index. Förutom att förbättra frågeprestandan kan ett klustrat index återskapas eller omorganiseras på begäran för att kontrollera tabellfragmentering. Ett grupperat index kan också skapas i en vy. (Klustrade index definieras i artikeln klustrade och icke-grupperade index.)
Typiska implementeringar
Grupperade index implementeras på följande sätt:
PRIMARY KEYochUNIQUEbegränsningar**När du skapar en
PRIMARY KEYvillkor skapas automatiskt ett unikt klustrat index i kolumnen eller kolumnerna om det inte redan finns ett grupperat index i tabellen och du inte anger något unikt icke-grupperat index. Primärnyckelkolumnen kan inte tillåtaNULLvärden.När du skapar en
UNIQUE-begränsning skapas ett icke-grupperat unikt index som standard för att upprätthålla enUNIQUE-begränsning. Du kan ange ett unikt grupperat index om det inte redan finns ett klustrat index i tabellen.Ett index som skapas som en del av villkoret får automatiskt samma namn som villkorsnamnet. Mer information finns i Primär- och sekundärnyckelbegränsningar och Unika begränsningar och kontrollera begränsningar.
Index oberoende av en begränsning
Du kan skapa ett klustrat index i en annan kolumn än primärnyckelkolumnen om en icke-klustrad primärnyckelbegränsning har angetts.
Limitations
När en klustrad indexstruktur skapas krävs diskutrymme för både de gamla (källan) och de nya (målstrukturerna) i respektive filer och filgrupper. Den gamla strukturen frigörs inte förrän hela transaktionen har godkänts. Ytterligare tillfälligt diskutrymme för sortering kan också krävas. Mer information finns i diskutrymmeskrav för index-DDL-åtgärder.
Om ett klustrat index skapas på en heap med flera befintliga icke-grupperade index måste alla icke-grupperade index återskapas så att de innehåller klustringsnyckelvärdet i stället för radidentifieraren (RID). På samma sätt, om ett klustrat index tas bort i en tabell som har flera icke-grupperade index, återskapas alla icke-grupperade index som en del av den
DROPåtgärden. Den här processen kan ta lång tid på stora tabeller.Det bästa sättet att skapa index på stora tabeller är att börja med det klustrade indexet och sedan skapa icke-grupperade index. Överväg att ange alternativet
ONLINEtillONnär du skapar index i befintliga tabeller. När det är inställt påONhålls inte långsiktiga tabelllås. Detta gör att frågor eller uppdateringar av den underliggande tabellen kan fortsätta. Mer information finns i Utföra indexåtgärder online.Indexnyckeln för ett grupperat index får inte innehålla varchar kolumner som har befintliga data i
ROW_OVERFLOW_DATAallokeringsenhet. Om ett klustrat index skapas på en varchar kolumn och befintliga data finns iIN_ROW_DATAallokeringsenhet misslyckas efterföljande infognings- eller uppdateringsåtgärder i kolumnen som skulle skicka data utanför rad. För att hämta information om tabeller som kan innehålla radöverflödesdata använder du den dynamiska hanteringsfunktionen sys.dm_db_index_physical_stats (Transact-SQL).
Permissions
Kräver ALTER behörighet i tabellen eller vyn. Användaren måste vara medlem i sysadmin fast serverroll eller db_ddladmin och db_owner fasta databasroller.
Använda SQL Server Management Studio
Skapa ett klustrat index från Object Explorer
I Object Explorer expanderar du tabellen där du vill skapa ett klustrat index.
Högerklicka på mappen Index, peka på Nytt indexoch välj Klustrat index....
I dialogrutan Nytt index på sidan Allmänt anger du namnet på det nya indexet i rutan Indexnamn.
Under indexnyckelkolumnerväljer du Lägg till....
I dialogrutan Välj kolumner fråntable_name markerar du kryssrutan i tabellkolumnen som ska läggas till i det klustrade indexet.
Välj OK.
I dialogrutan Nytt index väljer du OK.
Skapa ett grupperat index med hjälp av Tabelldesignern
I Object Explorer expanderar du databasen där du vill skapa en tabell med ett grupperat index.
Högerklicka på mappen Tables och välj Ny tabell....
Skapa en ny tabell som vanligt. Mer information finns i Skapa tabeller (databasmotor).
Högerklicka på den nya tabell som skapades tidigare och välj Design.
På menyn Table Designer väljer du Index/Nycklar.
I dialogrutan Index/nycklar väljer du Lägg till.
Välj det nya indexet i textrutan Vald primär/Unik nyckel eller Index.
I rutnätet väljer du Skapa som klustrad och väljer Ja i listrutan till höger om egenskapen.
Välj Stäng.
På menyn Arkiv väljer du Sparatable_name.
Använd Transact-SQL
I Object Exploreransluter du till en instans av databasmotorn.
I standardfältet väljer du Ny fråga.
Kopiera och klistra in följande exempel i frågefönstret och välj Kör.
USE AdventureWorks2022; GO -- Create a new table with three columns. CREATE TABLE dbo.TestTable ( TestCol1 INT NOT NULL, TestCol2 NCHAR(10) NULL, TestCol3 NVARCHAR(50) NULL ); GO -- Create a clustered index called IX_TestTable_TestCol1 -- on the dbo.TestTable table using the TestCol1 column. CREATE CLUSTERED INDEX IX_TestTable_TestCol1 ON dbo.TestTable (TestCol1); GO
Mer information finns i SKAPA INDEX.