Delen via


Indexen en beperkingen uitschakelen

van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-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 op ON.
  • 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 INDEXis minimaal ALTER machtiging voor de tabel of weergave vereist.

SQL Server Management Studio gebruiken

Een index uitschakelen

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

  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 uitschakelen.

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

  5. 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.

  6. 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

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

  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 uitschakelen.

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

  5. 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

  1. Maak in Objectverkennerverbinding met een exemplaar van Database Engine.

  2. Selecteer op de Standaardbalk Nieuwe query.

  3. Kopieer en plak het volgende voorbeeld in het queryvenster en selecteer uitvoeren. Met dit voorbeeld wordt de IX_Employee_OrganizationLevel_OrganizationNode-index in de HumanResources.Employee tabel uitgeschakeld.

    USE AdventureWorks2022;
    GO
    
    ALTER INDEX IX_Employee_OrganizationLevel_OrganizationNode
        ON HumanResources.Employee
    DISABLE;
    

Alle indexen in een tabel uitschakelen

  1. Maak in Objectverkennerverbinding met een exemplaar van de databasemotor.

  2. Selecteer op de standaardbalk Nieuwe query.

  3. 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;