Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:SQL Server
Database 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_idostats_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;