sys.sysindexes (Transact-SQL)
Include una riga per ogni indice e tabella del database corrente. Gli indici XML non sono supportati in questa vista. Le tabelle e gli indici partizionati non sono supportati completamente in questa vista. Utilizzare la vista del catalogo sys.indexes.
Importante |
---|
Questa tabella di sistema di SQL Server 2000 è disponibile come vista per compatibilità con le versioni precedenti. È consigliabile utilizzare invece le viste di sistema correnti di SQL Server. Per individuare la vista o le viste di sistema equivalenti, vedere Mapping delle tabelle di sistema di SQL Server 2000 alle viste di sistema di SQL Server 2005. Questa caratteristica verrà rimossa a partire da una delle prossime versioni di Microsoft SQL Server. Evitare di utilizzare questa caratteristica in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata. |
Nome colonna |
Tipo di dati |
Descrizione |
---|---|---|
id |
int |
ID della tabella alla quale appartiene l'indice. |
status |
int |
Informazioni sullo stato del sistema. Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
first |
binary(6) |
Puntatore alla prima pagina o alla pagina radice. Non utilizzato quando indid = 0. NULL = l'indice viene partizionato quando indid > 1. NULL = la tabella viene partizionata quando indid è 0 o 1. |
indid |
smallint |
ID dell'indice: 0 = heap 1 = indice cluster >1 = indice non cluster |
root |
binary(6) |
Se indid >= 1, root corrisponde al puntatore alla pagina radice. Non utilizzato quando indid = 0. NULL = l'indice viene partizionato quando indid > 1. NULL = la tabella viene partizionata quando indid è 0 o 1. |
minlen |
smallint |
Dimensioni minime di una riga. |
keycnt |
smallint |
Numero di chiavi. |
groupid |
smallint |
ID del filegroup in cui l'oggetto è stato creato. NULL = l'indice viene partizionato quando indid > 1. NULL = la tabella viene partizionata quando indid è 0 o 1. |
dpages |
int |
Se indid = 0 o indid = 1, dpages corrisponde al conteggio delle pagine di dati utilizzate. Se indid > 1, dpages corrisponde al conteggio delle pagine di indice utilizzate. 0 = l'indice viene partizionato quando indid > 1. 0 = la tabella viene partizionata quando indid è 0 o 1. Non restituisce risultati precisi se si verifica un overflow della riga. |
reserved |
int |
Se indid = 0 o indid = 1, reserved corrisponde al conteggio delle pagine allocate per tutti gli indici e i dati delle tabelle. Se indid > 1, reserved corrisponde al conteggio delle pagine allocate per l'indice. 0 = l'indice viene partizionato quando indid > 1. 0 = la tabella viene partizionata quando indid è 0 o 1. Non restituisce risultati precisi se si verifica un overflow della riga. |
used |
int |
Se indid = 0 o indid = 1, used corrisponde al conteggio totale delle pagine utilizzate per tutti gli indici e i dati delle tabelle. Se indid > 1, used corrisponde al conteggio delle pagine utilizzate per l'indice. 0 = l'indice viene partizionato quando indid > 1. 0 = la tabella viene partizionata quando indid è 0 o 1. Non restituisce risultati precisi se si verifica un overflow della riga. |
rowcnt |
bigint |
Conteggio delle righe a livello di dati basato su indid = 0 e indid = 1. 0 = l'indice viene partizionato quando indid > 1. 0 = la tabella viene partizionata quando indid è 0 o 1. |
rowmodctr |
int |
Conta il numero totale di righe inserite, eliminate o aggiornate a partire dall'ultimo aggiornamento delle statistiche per la tabella. 0 = l'indice viene partizionato quando indid > 1. 0 = la tabella viene partizionata quando indid è 0 o 1. In SQL Server 2005 e versioni successive, rowmodctr non è completamente compatibile con le versioni precedenti. Per ulteriori informazioni, vedere la sezione Osservazioni. |
xmaxlen |
smallint |
Dimensioni massime di una riga. |
maxirow |
smallint |
Dimensioni massime di una riga di indice non foglia. In SQL Server 2005 e versioni successive, maxirow non è completamente compatibile con le versioni precedenti. |
OrigFillFactor |
tinyint |
Valore del fattore di riempimento originale utilizzato durante la creazione dell'indice. Questo valore non viene mantenuto. Può tuttavia risultare utile se è necessario ricreare un indice e non si ricorda il fattore di riempimento utilizzato. |
StatVersion |
tinyint |
Restituisce 0. Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
reserved2 |
int |
Restituisce 0. Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
FirstIAM |
binary(6) |
NULL = l'indice viene partizionato. Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
impid |
smallint |
Flag di implementazione dell'indice. Restituisce 0. Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
lockflags |
smallint |
Utilizzata per vincolare le granularità dei blocchi considerati per un indice. Per ridurre al minimo il costo di blocco, è possibile ad esempio impostare una tabella di ricerca essenzialmente di sola lettura per l'esecuzione del blocco solo a livello di tabella. |
pgmodctr |
int |
Restituisce 0. Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
keys |
varbinary(816) |
Elenco degli ID delle colonne che costituiscono la chiave dell'indice. Restituisce NULL. Per visualizzare le colonne chiave dell'indice, utilizzare sys.sysindexkeys. |
name |
sysname |
Nome dell'indice o della statistica. Restituisce NULL quando indid = 0. Modificare l'applicazione in uso in modo da eseguire la ricerca di un nome di heap NULL. |
statblob |
image |
BLOB (Binary Large Object) per statistiche. Restituisce NULL. |
maxlen |
int |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
rows |
int |
Conteggio delle righe a livello di dati basato su indid = 0 e indid = 1. Il valore viene ripetuto per indid >1. |
Osservazioni
Le colonne definite come riservate non devono essere utilizzate.
Nelle versioni precedenti di SQL Server per ogni tabella con almeno una colonna text, ntext o image è inoltre presente una riga in sysindexes con indid = 255. Questo ID di indice non esiste più. Quando una tabella o un indice contiene uno o più tipi di dati LOB (Large Object), per gestire l'archiviazione di tali dati viene assegnata un'unità di allocazione LOB_DATA per partizione. Per ulteriori informazioni, vedere Organizzazione di tabelle e indici.
Le colonne dpages, reserved e used non restituiscono risultati precisi se la tabella o l'indice include dati presenti nell'unità di allocazione ROW_OVERFLOW. I conteggi delle pagine per ogni indice vengono inoltre rilevati separatamente e per la tabella di base non vengono aggregati. Per visualizzare i conteggi delle pagine, utilizzare la vista del catalogo sys.allocation_units o sys.partitions. In alternativa, utilizzare la vista a gestione dinamica sys.dm_db_partition_stats.
Nelle versioni precedenti di SQL Server il Motore di database gestisce contatori delle modifiche a livello di riga. Questi contatori vengono ora gestiti a livello di colonna. Pertanto, il calcolo della colonna rowmodctr genera risultati simili ma non esattamente corrispondenti a quelli delle versioni precedenti.
Se si utilizza il valore in rowmodctr per determinare il momento dell'aggiornamento delle statistiche, considerare le soluzioni seguenti:
Non eseguire alcuna operazione. Il nuovo valore di rowmodctr è spesso utile per determinare il momento dell'aggiornamento delle statistiche, poiché il comportamento di rowmodctr consente risultati molto simili a quelli restituiti dalle versioni precedenti.
Utilizzare AUTO_UPDATE_STATISTICS. Per ulteriori informazioni, vedere Utilizzo di statistiche per migliorare le prestazioni di esecuzione delle query.
Determinare il momento dell'aggiornamento delle statistiche in base a un intervallo di tempo. Ad esempio, ogni ora, ogni giorno o ogni settimana.
Determinare il momento dell'aggiornamento delle statistiche utilizzando informazioni a livello di applicazione. Ad esempio, ogni volta che il valore massimo di una colonna identity viene modificato di oltre 10.000 unità oppure ogni volta che viene eseguito un inserimento bulk.