Indexen en beperkingen uitschakelen
van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL-database in Microsoft Fabric
In dit artikel wordt beschreven hoe u een index of beperkingen in SQL Server uitschakelt met behulp van SQL Server Management Studio of Transact-SQL. Als u een index uitschakelt, voorkomt u dat gebruikers toegang hebben tot de index en voor geclusterde indexen naar de onderliggende tabelgegevens. De indexdefinitie blijft in metagegevens en indexstatistieken worden bewaard op niet-geclusterde indexen. Als u een geclusterde index uitschakelt in een weergave of een niet-geclusterde index, worden de indexgegevens fysiek verwijderd.
Als u een geclusterde index in een tabel uitschakelt, wordt de toegang tot de gegevens voorkomen. De gegevens blijven in de tabel, maar zijn niet beschikbaar voor DML-bewerkingen (Data Manipulat Language) totdat de index wordt verwijderd of opnieuw wordt opgebouwd.
Beperkingen
De index wordt niet onderhouden terwijl deze is uitgeschakeld.
De optimalisatiefunctie voor query's beschouwt de uitgeschakelde index niet bij het maken van queryuitvoeringsplannen. Query's die verwijzen naar de uitgeschakelde index met een tabelhint mislukken ook.
U kunt geen index maken die dezelfde naam gebruikt als een bestaande uitgeschakelde index.
Een uitgeschakelde index kan worden verwijderd.
Wanneer u een unieke index uitschakelt, worden de beperking PRIMARY KEY
of UNIQUE
en alle FOREIGN KEY
beperkingen die verwijzen naar de geïndexeerde kolommen uit andere tabellen ook uitgeschakeld. Wanneer u een geclusterde index uitschakelt, worden alle beperkingen voor binnenkomende en uitgaande FOREIGN KEY
voor de onderliggende tabel ook uitgeschakeld. De namen van beperkingen worden weergegeven in een waarschuwingsbericht wanneer de index is uitgeschakeld. Nadat u de index opnieuw hebt opgebouwd, moeten alle beperkingen handmatig worden ingeschakeld met behulp van de instructie ALTER TABLE CHECK CONSTRAINT
.
Niet-geclusterde indexen worden automatisch uitgeschakeld wanneer de gekoppelde geclusterde index is uitgeschakeld. Ze kunnen pas worden ingeschakeld als de geclusterde index in de tabel of weergave is ingeschakeld of als de geclusterde index in de tabel wordt verwijderd. Niet-geclusterde indexen moeten expliciet worden ingeschakeld, tenzij de geclusterde index is ingeschakeld met behulp van de instructie ALTER INDEX ALL REBUILD
.
Met de instructie ALTER INDEX ALL REBUILD
worden alle uitgeschakelde indexen in de tabel opnieuw opgebouwd en ingeschakeld, met uitzondering van uitgeschakelde indexen in weergaven. Indexen voor weergaven moeten worden ingeschakeld in een afzonderlijke ALTER INDEX ALL REBUILD
instructie.
Als u een geclusterde index voor een tabel uitschakelt, worden ook alle geclusterde en niet-geclusterde indexen uitgeschakeld in weergaven die naar die tabel verwijzen. Deze indexen moeten net als die indexen in de tabel waarnaar wordt verwezen, opnieuw worden opgebouwd.
De gegevensrijen van de uitgeschakelde geclusterde index kunnen niet worden geopend, behalve om de geclusterde index te verwijderen of opnieuw te bouwen.
U kunt een uitgeschakelde niet-geclusterde index online herbouwen wanneer de tabel geen uitgeschakelde geclusterde index heeft. U moet echter altijd een uitgeschakelde geclusterde index offline herbouwen als u de instructie ALTER INDEX REBUILD
of CREATE INDEX WITH DROP_EXISTING
gebruikt. Zie Indexbewerkingen online uitvoerenvoor meer informatie over online indexbewerkingen.
De CREATE STATISTICS
-instructie kan niet worden uitgevoerd op een tabel met een uitgeschakelde geclusterde index.
De AUTO_CREATE_STATISTICS
databaseoptie maakt nieuwe statistieken voor een kolom wanneer de index is uitgeschakeld en de volgende voorwaarden bestaan:
-
AUTO_CREATE_STATISTICS
is ingesteld opON
. - Er zijn geen bestaande statistieken voor de kolom.
- Statistieken zijn vereist tijdens het optimaliseren van query's.
Als een geclusterde index is uitgeschakeld, kan DBCC CHECKDB- geen informatie over de onderliggende tabel retourneren; In plaats daarvan rapporteert de instructie dat de geclusterde index is uitgeschakeld. DBCC INDEXDEFRAG- kan niet worden gebruikt om een uitgeschakelde index te defragmenteren; de instructie mislukt met een foutbericht. U kunt DBCC DBREINDEX gebruiken om een uitgeschakelde index opnieuw te bouwen.
Als u een nieuwe geclusterde index maakt, worden eerder niet-geclusterde indexen ingeschakeld. Zie Indexen en beperkingen inschakelenvoor meer informatie.
Als de tabel een heap is, worden alle niet-geclusterde indexen opnieuw opgebouwd.
Machtigingen
Voor het uitvoeren van ALTER INDEX
is minimaal ALTER
machtiging voor de tabel of weergave vereist.
SQL Server Management Studio gebruiken
Een index uitschakelen
Selecteer in Objectverkenner het plusteken om de database uit te vouwen die de tabel bevat waarvoor u een index wilt uitschakelen.
Selecteer het plusteken om de map Tabellen uit te vouwen.
Selecteer het plusteken om de tabel uit te vouwen waarop u een index wilt uitschakelen.
Selecteer het plusteken om de map Indexen uit te vouwen.
Klik met de rechtermuisknop op de index die u wilt uitschakelen en selecteer uitschakelen.
Notitie
Als de tabel is geopend in ontwerpmodus, is het besturingselement Uitschakelen niet beschikbaar. Als u wilt doorgaan, sluit u de ontwerpfunctie voor tabellen en begint u opnieuw.
Controleer in het dialoogvenster Indexen uitschakelen of de juiste index zich in de Indexen bevindt om raster uit te schakelen en OK-te selecteren.
Alle indexen in een tabel uitschakelen
Selecteer in Objectverkenner het plusteken om de database uit te vouwen die de tabel bevat waarop u de indexen wilt uitschakelen.
Selecteer het plusteken om de map Tabellen uit te vouwen.
Selecteer het plusteken om de tabel uit te vouwen waarop u de indexen wilt uitschakelen.
Klik met de rechtermuisknop op de map Indexen en selecteer Alles uitschakelen.
Controleer in het dialoogvenster Indexen uitschakelen of de juiste indexen zich in de Indexen bevinden om raster uit te schakelen en OK-te selecteren. Als u een index uit de Indexen wilt verwijderen om raster uit te schakelen, selecteert u de index en drukt u vervolgens op de -toets verwijderen.
De volgende informatie is beschikbaar in het dialoogvenster Indexen uitschakelen:
indexnaam
Geeft de naam van de index weer. Tijdens de uitvoering wordt in deze kolom ook een pictogram weergegeven dat de status aangeeft.
Tabelnaam
Geeft de naam weer van de tabel of weergave waarin de index is gemaakt.
Index Type
Geeft het type index weer: gegroepeerde, niet-geclusterde, Spatialof XML-.
status
Geeft de status van de uitgeschakelde bewerking weer. Mogelijke waarden na uitvoering zijn:
Blanco
Voordat de uitvoering wordt uitgevoerd, is de status leeg.
in uitvoering
Het uitschakelen van de indexen is gestart, maar is niet voltooid.
Succes
De uitschakelbewerking is succesvol voltooid.
Fout
Er is een fout opgetreden tijdens het uitschakelen van de index en de bewerking is niet voltooid.
gestopt
Het uitschakelen van de index is niet voltooid omdat de gebruiker de bewerking heeft gestopt.
bericht
Bevat de tekst van foutmeldingen tijdens het uitschakelen. Tijdens de uitvoering worden fouten weergegeven als hyperlinks. De tekst van de hyperlinks beschrijft de hoofdtekst van de fout. De kolom Message is zelden breed genoeg om de volledige berichttekst te lezen. Er zijn twee manieren om de volledige tekst op te halen:
- Beweeg de cursor over de berichtcel om een tooltip met de fouttekst weer te geven.
- Selecteer de hyperlink om een dialoogvenster weer te geven met de volledige fout.
Gebruik Transact-SQL
De codevoorbeelden in dit artikel gebruiken de AdventureWorks2022
of AdventureWorksDW2022
voorbeelddatabase, die u kunt downloaden van de Microsoft SQL Server-voorbeelden en communityprojecten startpagina.
Een index uitschakelen
Maak in Objectverkennerverbinding met een exemplaar van Database Engine.
Selecteer op de Standaardbalk Nieuwe query.
Kopieer en plak het volgende voorbeeld in het queryvenster en selecteer uitvoeren. Met dit voorbeeld wordt de
IX_Employee_OrganizationLevel_OrganizationNode
-index in deHumanResources.Employee
tabel uitgeschakeld.USE AdventureWorks2022; GO ALTER INDEX IX_Employee_OrganizationLevel_OrganizationNode ON HumanResources.Employee DISABLE;
Alle indexen in een tabel uitschakelen
Maak in Objectverkennerverbinding met een exemplaar van de databasemotor.
Selecteer op de standaardbalk Nieuwe query.
Kopieer en plak het volgende voorbeeld in het queryvenster en selecteer uitvoeren. Met dit voorbeeld worden alle indexen in de
HumanResources.Employee
tabel uitgeschakeld.USE AdventureWorks2022; GO ALTER INDEX ALL ON HumanResources.Employee DISABLE;