sys.dm_db_stats_properties (Transact-SQL)
Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure
Restituisce le proprietà delle statistiche per l'oggetto di database specificato (tabella o vista indicizzata) nel database di SQL Server corrente. Per le tabelle partizionate, vedere le sys.dm_db_incremental_stats_properties simili.
Sintassi
sys.dm_db_stats_properties (object_id, stats_id)
Argomenti
object_id
ID dell'oggetto nel database corrente per il quale sono richieste le proprietà di una delle relative statistiche. object_id è di tipo int.
stats_id
ID delle statistiche per l'oggetto object_idspecificato. L'ID delle statistiche può essere ottenuto dalla DMV sys.stats . stats_id è di tipo int.
Tabella restituita
Nome colonna | Tipo di dati | Descrizione |
---|---|---|
object_id | int | ID dell'oggetto (tabella o vista indicizzata) per cui restituire le proprietà dell'oggetto statistiche. |
stats_id | int | ID dell'oggetto statistiche. Univoco all'interno della tabella o della vista indicizzata. Per altre informazioni, vedere sys.stats (Transact-SQL). |
last_updated | datetime2 | Data e ora dell'ultimo aggiornamento dell'oggetto statistiche. Per altre informazioni, vedere la sezione Osservazioni più avanti nella pagina. |
rows | bigint | Numero totale di righe della tabella o della vista indicizzata al momento dell'ultimo aggiornamento delle statistiche. Se le statistiche vengono filtrate o corrispondono a un indice filtrato, il numero di righe potrebbe essere inferiore al numero di righe della tabella. |
rows_sampled | bigint | Numero totale di righe campionate per i calcoli statistici. |
steps | int | Numero di intervalli nell'istogramma. Per altre informazioni, vedere DBCC SHOW_STATISTICS (Transact-SQL). |
unfiltered_rows | bigint | Numero totale di righe nella tabella prima dell'applicazione dell'espressione di filtro (per statistiche filtrate). Se le statistiche non vengono filtrate, unfiltered_rows corrisponde al valore restituito nella colonna rows. |
modification_counter | bigint | Numero totale di modifiche per la colonna iniziale delle statistiche, la colonna in cui viene compilato l'istogramma, dall'ultimo aggiornamento delle statistiche. Tabelle ottimizzate per la memoria: a partire da SQL Server 2016 (13.x) e in database SQL di Azure questa colonna contiene: numero totale di modifiche per la tabella dall'ultima volta che le statistiche sono state aggiornate o il database è stato riavviato. |
persisted_sample_percent | float | Percentuale di campionamento persistente usata per gli aggiornamenti delle statistiche che non specificano in modo esplicito una percentuale di campionamento. Se il valore è zero, non viene impostata alcuna percentuale di campionamento persistente per la statistica. Si applica a: SQL Server 2016 (13.x) SP1 CU4 |
Osservazioni:
sys.dm_db_stats_properties restituisce un set di righe vuoto in una delle condizioni seguenti:
- object_id o stats_id è NULL.
- L'oggetto specificato non viene trovato oppure non corrisponde a una tabella o a una vista indicizzata.
- L'ID delle statistiche specificato non corrisponde alle statistiche esistenti per l'ID oggetto specificato.
- L'utente corrente non dispone delle autorizzazioni per visualizzare l'oggetto statistiche.
Questo comportamento consente l'utilizzo sicuro di sys.dm_db_stats_properties quando viene applicato incrociato alle righe nelle visualizzazioni, ad esempio sys.objects e sys.stats.
La data di aggiornamento delle statistiche viene archiviata nell'oggetto BLOB di statistiche insieme all'istogramma e al vettore di densità, non nei metadati. Quando non vengono letti dati per generare dati statistici, il BLOB delle statistiche non viene creato, la data non è disponibile e la colonna last_updated è NULL. È il caso delle statistiche filtrate per le quali il predicato non restituisce alcuna riga o delle nuove tabelle vuote.
Autorizzazioni
L'utente deve avere autorizzazioni di selezione per le colonne delle statistiche o essere proprietario della tabella o membro del ruolo predefinito del server sysadmin
, del ruolo predefinito del database db_owner
o del ruolo predefinito del database db_ddladmin
.
Esempi
R. Esempio semplice
Nell'esempio seguente vengono restituite le statistiche per la Person.Person
tabella nel database AdventureWorks.
SELECT * FROM sys.dm_db_stats_properties (object_id('Person.Person'), 1);
B. Restituzione di tutte le proprietà di statistiche per una tabella
Nell'esempio seguente vengono restituite le proprietà di tutte le statistiche esistenti per la tabella TEST.
SELECT sp.stats_id, name, filter_definition, last_updated, rows, rows_sampled, steps, unfiltered_rows, modification_counter
FROM sys.stats AS stat
CROSS APPLY sys.dm_db_stats_properties(stat.object_id, stat.stats_id) AS sp
WHERE stat.object_id = object_id('TEST');
C. Restituzione delle proprietà di statistiche per oggetti modificati di frequente
Nell'esempio seguente vengono restituite tutte le tabelle, le viste indicizzate e le statistiche nel database corrente per cui la colonna iniziale è stata modificata più di 1000 volte dall'ultimo aggiornamento delle statistiche.
SELECT obj.name, obj.object_id, stat.name, stat.stats_id, last_updated, modification_counter
FROM sys.objects AS obj
INNER JOIN sys.stats AS stat ON stat.object_id = obj.object_id
CROSS APPLY sys.dm_db_stats_properties(stat.object_id, stat.stats_id) AS sp
WHERE modification_counter > 1000;
Vedi anche
DBCC SHOW_STATISTICS (Transact-SQL)
sys.stats (Transact-SQL)
Funzioni e viste a gestione dinamica relative agli oggetti (Transact-SQL)
Funzioni a gestione dinamica e DMV (Transact-SQL)
sys.dm_db_incremental_stats_properties (Transact-SQL)
sys.dm_db_stats_histogram (Transact-SQL)