Indici

Deframmentazione indici

Sergio Govoni

Abbiamo trattato il problema della frammentazione degli indici nei post Index Fragmentation e Index Fragmentation (Parte 2) definendo la stored procedure USP_ExecReorgRebuildIndex() in grado di eseguire la deframmentazione degli indici con avg_fragmentation_in_percent maggiore del 10% in un database SQL Server 2005.

La DMV sys.dm_db_index_physical_stats non è presente nella versione 2000 di SQL Server (di cui esistono numerose installazioni attive in produzione) da qui la non compatibilità della stored procedure USP_ExecReorgRebuildIndex() su SQL Server 2000.

Indici : capire quando e come sono veramente utilizzati? Utilizzo dei piani di esecuzione per rispondere a queste domande

Davide Mauri

Gli indici sono gli oggetti che permettono di fare un salto di qualità da un punto di vista di performance al nostro sistema.

Ma un indice è veramente utilizzato dal nostro sistema?

E, nel caso sia utilizzato come viene utilizzato e qual’è il suo costo in termini di gestione?

Molto spesso gli indici vengono messi ad intuito e, visto, che le performance di una particolare query sono migliorate si riitiene che l’indice è utile e quindi lo lasciamo.

Pro SQL Server 2005 Database Design and Optimization

Davide Mauri
Titolo
Autore
Luis Davidson with Kevin Kline and Kurt Windisch
Editore
Apress
Livello
Intermediate-Advanced
ISBN
1-59059-529-7

Il libro di Luis Davidson è la naturale evoluzione della precedente versione scritta per SQL Server 2000. La prerogativa di questo libro – così come del precedente – è la focalizzazione non solo sull’uso di SQL Server come prodotto con tutte le sue feature e le sue peculiari caratteristiche, ma anche e soprattutto sulla parte architetturale dell’implementazione di un database, ossia la modellazione del database stesso.

Primary Key e Clusterd-Index di una tabella coincidono sempre?

Davide Mauri

No necessariamente. Infatti l’indice clustered e la chiave primaria di una tabella sono due cose nettamente distinte fra loro: - la chiave primaria è un vincolo che assicura l’univocità di ogni riga della tabella - un indice clustered è un struttura B+Tree che determina un ordinamento specifico dei dati della tabella nelle pagine di dati. Di fatto, però, SQL Server implementa il vincolo di chiave primaria attraverso un ‘unique index’ di tipo ‘clustered’, a meno che venga prima creata la tabella priva di chiave primaria, quindi aggiunto l’indice clusterd, infine aggiunto il vincolo di chiave primaria che sarà quindi implementata attraverso un ‘unique index’ di tipo ’non-clustered’