Delen via


Indexen en beperkingen inschakelen

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-database in Microsoft Fabric Preview

In dit artikel wordt beschreven hoe u een uitgeschakelde index inschakelt in SQL Server met behulp van SQL Server Management Studio of Transact-SQL. Nadat een index is uitgeschakeld, blijft deze in een uitgeschakelde status totdat deze opnieuw wordt opgebouwd of verwijderd.

Limitations

Nadat de index opnieuw is opgebouwd, moeten eventuele beperkingen die zijn uitgeschakeld vanwege het uitschakelen van de index, handmatig worden ingeschakeld. PRIMARY KEY en UNIQUE beperkingen worden ingeschakeld door de bijbehorende index opnieuw te bouwen. Deze index moet opnieuw worden opgebouwd (ingeschakeld) voordat u beperkingen kunt inschakelen FOREIGN KEY die verwijzen naar de PRIMARY KEY of UNIQUE beperking. FOREIGN KEY beperkingen worden ingeschakeld met behulp van de ALTER TABLE CHECK CONSTRAINT instructie.

Het opnieuw samenstellen van een uitgeschakelde geclusterde index kan niet worden uitgevoerd wanneer de ONLINE optie is ingesteld op ON.

Wanneer de geclusterde index is uitgeschakeld of ingeschakeld en de niet-geclusterde index is uitgeschakeld, heeft de geclusterde indexactie de volgende resultaten op de uitgeschakelde niet-geclusterde index.

Geclusterde indexactie Niet-geclusterde indexstatus uitgeschakeld
ALTER INDEX REBUILD Remains disabled
ALTER INDEX ALL REBUILD Opnieuw opgebouwd en ingeschakeld
DROP INDEX Opnieuw opgebouwd en ingeschakeld
CREATE INDEX WITH DROP_EXISTING Remains disabled

Het maken van een nieuwe geclusterde index gedraagt zich hetzelfde als ALTER INDEX ALL REBUILD.

Toegestane acties voor niet-geclusterde indexen die zijn gekoppeld aan een geclusterde index, zijn afhankelijk van de status, ongeacht of deze is uitgeschakeld of ingeschakeld, van beide indextypen. De volgende tabel bevat een overzicht van de toegestane acties voor niet-geclusterde indexen.

Niet-geclusterde indexactie Wanneer zowel de geclusterde als niet-geclusterde indexen zijn uitgeschakeld Wanneer de geclusterde index is ingeschakeld en de niet-geclusterde index een van beide statussen heeft
ALTER INDEX REBUILD De actie mislukt De actie slaagt
DROP INDEX De actie slaagt De actie slaagt
CREATE INDEX WITH DROP_EXISTING De actie mislukt De actie slaagt

Bij het opnieuw bouwen van gecomprimeerde niet-geclusterde indexen is standaard ingesteld op data_compressionnone, wat betekent dat indexen niet worden gecomprimeerd. Dit komt doordat metagegevens van de compressie-instellingen verloren gaan wanneer niet-geclusterde indexen zijn uitgeschakeld. Als u dit probleem wilt omzeilen, moet u expliciete gegevenscompressie opgeven in de herbouwinstructie.

Permissions

Hiervoor is ALTER machtiging voor de tabel of weergave vereist. DBCC DBREINDEXAls u de tabel gebruikt, moet u de eigenaar zijn van de tabel of lid zijn van de vaste serverfunctie sysadmin, of lid zijn van de db_ddladmin of db_owner vaste databaserollen.

SQL Server Management Studio gebruiken

Een uitgeschakelde index inschakelen

  1. Selecteer in Objectverkenner het plusteken om de database uit te vouwen die de tabel bevat waarop u een index wilt inschakelen.

  2. Selecteer het plusteken om de map Tabellen uit te vouwen.

  3. Selecteer het plusteken om de tabel uit te vouwen waarop u een index wilt inschakelen.

  4. Selecteer het plusteken om de map Indexen uit te vouwen.

  5. Klik met de rechtermuisknop op de index die u wilt inschakelen en selecteer opnieuw opbouwen.

  6. Controleer in het dialoogvenster Indexen opnieuw opbouwen of de juiste index zich in de Indexen bevindt om raster opnieuw te bouwen en OK-te selecteren.

Alle indexen in een tabel inschakelen

  1. Selecteer in Objectverkenner het plusteken om de database uit te vouwen die de tabel bevat waarop u de indexen wilt inschakelen.

  2. Selecteer het plusteken om de map Tabellen uit te vouwen.

  3. Selecteer het plusteken om de tabel uit te vouwen waarop u de indexen wilt inschakelen.

  4. Klik met de rechtermuisknop op de map Indexen en selecteer Alles opnieuw opbouwen.

  5. Controleer in het dialoogvenster Indexen opnieuw opbouwen of de juiste indexen zich in de indexen bevinden om het raster opnieuw op te bouwen en selecteer OK. Als u een index uit de Indexen wilt verwijderen om raster opnieuw te bouwen, selecteert u de index en drukt u op Delete.

De volgende informatie is beschikbaar in het dialoogvenster Indexen herbouwen:

Use Transact-SQL

De codevoorbeelden in dit artikel gebruiken de AdventureWorks2022 of AdventureWorksDW2022 voorbeelddatabase die u kunt downloaden van de startpagina van Microsoft SQL Server Samples en Community Projects .

Een uitgeschakelde index inschakelen met ALTER INDEX

Voer het volgende Transact-SQL script uit. In dit voorbeeld wordt de IX_Employee_OrganizationLevel_OrganizationNode index in de HumanResources.Employee tabel ingeschakeld.

USE AdventureWorks2022;
GO

ALTER INDEX IX_Employee_OrganizationLevel_OrganizationNode
ON HumanResources.Employee REBUILD;
GO

Een uitgeschakelde index inschakelen met CREATE INDEX

Voer het volgende Transact-SQL script uit. In dit voorbeeld wordt de IX_Employee_OrganizationLevel_OrganizationNode index in de HumanResources.Employee tabel opnieuw gemaakt met behulp van de OrganizationLevel en OrganizationNode kolommen en vervolgens de bestaande IX_Employee_OrganizationLevel_OrganizationNode index verwijderd.

USE AdventureWorks2022;
GO

CREATE INDEX IX_Employee_OrganizationLevel_OrganizationNode
ON HumanResources.Employee(OrganizationLevel, OrganizationNode) WITH (DROP_EXISTING = ON);
GO

Een uitgeschakelde index inschakelen met DBCC DBREINDEX

Note

Deze functie wordt verwijderd in een toekomstige versie van SQL Server. Vermijd het gebruik van deze functie in nieuwe ontwikkelwerkzaamheden en plan om toepassingen te wijzigen die momenteel gebruikmaken van deze functie.

Voer het volgende Transact-SQL script uit. In dit voorbeeld wordt de IX_Employee_OrganizationLevel_OrganizationNode index in de HumanResources.Employee tabel ingeschakeld.

USE AdventureWorks2022;
GO

DBCC DBREINDEX ("HumanResources.Employee", IX_Employee_OrganizationLevel_OrganizationNode);
GO

Alle indexen in een tabel inschakelen met ALTER INDEX

Voer het volgende Transact-SQL script uit. In dit voorbeeld worden alle indexen in de HumanResources.Employee tabel ingeschakeld.

USE AdventureWorks2022;
GO

ALTER INDEX ALL
ON HumanResources.Employee REBUILD;
GO

Alle indexen in een tabel inschakelen met DBCC DBREINDEX

Note

Deze functie wordt verwijderd in een toekomstige versie van SQL Server. Vermijd het gebruik van deze functie in nieuwe ontwikkelwerkzaamheden en plan om toepassingen te wijzigen die momenteel gebruikmaken van deze functie.

Voer het volgende Transact-SQL script uit. In dit voorbeeld worden alle indexen in de HumanResources.Employee tabel ingeschakeld.

USE AdventureWorks2022;
GO

DBCC DBREINDEX ("HumanResources.Employee", " ");
GO