sys.dm_db_stats_properties (Transact-SQL)

Si applica a:SQL ServerDatabase SQL di AzureIstanza gestita di SQL di AzureDatabase SQL in Microsoft Fabric

La sys.dm_db_stats_properties funzione di gestione dinamica restituisce statistiche per l'oggetto database specificato nel database corrente.

Per le tabelle partizionate, vedi anche il sys.dm_db_incremental_stats_properties simile.

Sintassi

sys.dm_db_stats_properties (object_id, stats_id)  

Argomenti

object_id

L'ID dell'oggetto nel database corrente. object_id è inteinte.

stats_id

L'ID delle statistiche per il specificato object_id. Puoi ottenere l'ID statistico dalla vista di gestione dinamica di sys.stats . stats_id è inteinte.

Tabella restituita

Nome colonna Tipo di dati Descrizione
object_id int ID dell'oggetto (vista tabella o indicizzata).
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 in questo articolo.
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 sono filtrate, unfiltered_rows è uguale al valore restituito nella rows colonna.
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.

Applicabile a: SQL Server 2016 (13.x) SP1 CU4 e versioni successive

Osservazioni:

La sys.dm_db_stats_properties funzione restituisce un set di righe vuoto in una qualsiasi delle seguenti condizioni:

  • object_id o stats_id è NULL.
  • L'oggetto specificato non viene trovato o non corrisponde a una tabella o a una vista indicizzata.
  • L'ID statistico specificato non corrisponde alle statistiche esistenti per l'ID oggetto specificato.
  • L'utente attuale non ha permessi per visualizzare l'oggetto statistiche.

Questo comportamento consente l'uso sicuro di sys.dm_db_stats_properties quando applicato incrociato a righe in viste come 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 delle statistiche, il BLOB delle statistiche non viene creato, la data non è disponibile e la last_updated colonna è NULL. Questa condizione si applica alle statistiche filtrate per le quali il predicato non restituisce righe, o alle nuove tabelle vuote.

Autorizzazioni

Hai bisogno SELECT di permessi sulle colonne delle statistiche, oppure devi possedere la tabella, o essere membro del sysadmin ruolo fisso del server, del db_owner ruolo fisso nel database o del db_ddladmin ruolo fisso nel database.

Esempi

R. Esempio semplice

Il seguente esempio restituisce informazioni sulle statistiche per la Person.Person tabella nel AdventureWorks database.

SELECT * FROM sys.dm_db_stats_properties (object_id('Person.Person'), 1);

B. Restituire tutte le proprietà statistiche per una tabella

Il seguente esempio restituisce le proprietà di tutte le statistiche esistenti per la tabella Sales.SalesOrderDetail.

SELECT 
    OBJECT_SCHEMA_NAME(stat.object_id) AS schema_name,
    OBJECT_NAME(stat.object_id)        AS table_name,
    sp.stats_id, 
    stat.[name], 
    stat.filter_definition, 
    sp.last_updated, 
    sp.[rows], 
    sp.rows_sampled, 
    sp.steps,
    sp.unfiltered_rows, 
    sp.modification_counter   
FROM sys.stats AS stat   
OUTER APPLY sys.dm_db_stats_properties(stat.object_id, stat.stats_id) AS sp  
WHERE stat.object_id = OBJECT_ID(N'Sales.SalesOrderDetail')

C. Proprietà delle statistiche di ritorno per oggetti frequentemente modificati

Il seguente esempio restituisce tutte le tabelle, le viste indicizzate e le statistiche nel database corrente per cui la colonna iniziale è stata modificata più di 1.000 volte dall'ultimo aggiornamento delle statistiche.

SELECT 
    OBJECT_SCHEMA_NAME(obj.[object_id]) AS schema_name,
    obj.[name],
    stat.[name],
    stat.stats_id, 
    sp.last_updated, 
    sp.modification_counter  
FROM sys.objects AS obj   
INNER JOIN sys.stats AS stat ON stat.object_id = obj.object_id  
OUTER APPLY sys.dm_db_stats_properties(stat.object_id, stat.stats_id) AS sp  
WHERE sp.modification_counter > 1000;