Come riorganizzare e ricostruire gli indici in MS SQL?

Gli indici sono gli oggetti dei file di database MS SQL. Questi oggetti di schema agiscono come un indice del database. Vengono utilizzati per migliorare le operazioni di recupero dati su una tabella del database MS SQL.

Tuttavia, nel tempo, la tabella può frammentarsi a causa di operazioni continue di INSERT e UPDATE. Inoltre, come altri oggetti, anche gli indici sono soggetti a corruzione. Se gli indici si corrompono, puoi ricevere errori come:

Plain Text

 

Per risolvere gli errori associati alla corruzione degli indici o quando il livello di frammentazione degli indici aumenta, puoi ricostruire o riorganizzare gli indici. In questo articolo, discuteremo come riorganizzare e ricostruire gli indici in MS SQL Server. Menzioneremo anche uno strumento avanzato di riparazione del database MS SQL che può ripristinare rapidamente gli indici e altri oggetti da file di database SQL corrotti con completa precisione.

Controlla la percentuale di frammentazione degli indici

Prima di riorganizzare gli indici, è necessario conoscere la percentuale di frammentazione. Puoi usare il comando seguente per controllare la percentuale di frammentazione dell’indice:

SQL

 

Riorganizzare gli indici in SQL Server

Se il livello di frammentazione dell’indice è compreso tra 10 e 30, è consigliato riorganizzare l’indice. Puoi usare il seguente codice in T-SQL per riorganizzare l’indice:

SQL

 

In alternativa, è possibile utilizzare il SQL Server Management Studio (SSMS) per riorganizzare gli indici. Seguire i seguenti passaggi:

  • In SSMS, connettersi all’istanza del server SQL.
  • Nell’Esplora oggetti, espandere il database.
  • Espandere la cartella Tabelle e poi la cartella Indici.
  • Fare clic con il pulsante destro sull’indice che si desidera riorganizzare, quindi fare clic su Riorganizza.

Ricostruzione degli indici in MS SQL

Se la frammentazione è elevata, è possibile ricostruire gli indici. È possibile utilizzare il comando DBCC DBREINDEX per ricostruire un indice. Ecco come eseguire questo comando:

SQL

 

Questo comando non supporta gli indici spaziali e gli indici delle colonne con ottimizzazione per la memoria. 

In alternativa, è possibile utilizzare il comando ALTER INDEX:

SQL

 

È anche possibile ricostruire gli indici utilizzando l’interfaccia utente grafica in SSMS. Ecco i passaggi da seguire:

  • In SSMS, nell’Esplora oggetti, espandere il database contenente la tabella su cui è necessario ricostruire un indice.
  • Espandere la cartella Tabelle e poi la tabella su cui è necessario ricostruire un indice.
  • Espandere la cartella Indici, fare clic con il pulsante destro sull’indice che è necessario ricostruire e selezionare Ricostruisci.

Riparare il Database di SQL Server

Se la riorganizzazione o la ricostruzione degli indici non funziona, allora puoi provare il comando DBCC CHECKDB con l’opzione REPAIR_ALLOW_DATA_LOSS per riparare il database. Ecco come utilizzare questo comando:

Prima, cambia la modalità del database in SINGLE_USER utilizzando il comando seguente:

SQL

 

Successivamente, esegui il comando DBCC CHECKDB come indicato di seguito per riparare il database:

SQL

 

Dopo la riparazione, imposta la modalità del database su MULTI_USER eseguendo il comando seguente:

SQL

 

Il comando DBCC CHECKDB sopra può aiutarti a risolvere tutti gli errori correlati alla corruzione negli indici. Può riparare sia gli indici cluster che non cluster nei database SQL. Tuttavia, non garantisce un completo recupero dei dati e può causare perdita di dati. Per prevenire la perdita di dati, puoi utilizzare dei tool di riparazione MS SQL professionali. Sono progettati con algoritmi avanzati per recuperare tutti gli oggetti, inclusi gli indici cluster e non cluster, le stored procedure, i trigger, ecc., dal database corrotto. 

Conclusione

Puoi ridurre la frammentazione degli indici riorganizzando o ricostruendo l’indice. In questo articolo, abbiamo spiegato come verificare la percentuale di frammentazione negli indici e come ricostruire gli indici.

Source:
https://dzone.com/articles/reorganize-and-rebuild-indexes-in-ms-sql