Condividi tramite


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)