Dbcc showstatistics esempio
DBCC SHOW_STATISTICS (Transact-SQL)
Si applica a: SQL Server Azure SQL Database Azure SQL Istanza gestita di Azure Synapse Analytics Endpoint di analisi SQL in Microsoft Fabric Warehouse in Microsoft Fabric
Visualizza le statistiche correnti di ottimizzazione delle query per una tabella o una vista indicizzata. Query Optimizer utilizza le statistiche per stimare la cardinalità o il numero di righe nel risultato della query, consentendo a Query Optimizer di creare un piano di query di alta qualità. Ad esempio, Query Optimizer potrebbe utilizzare le stime della cardinalità per scegliere l'operatore di ricerca dell'indice anziché l'operatore di analisi dell'indice nel piano di query, migliorando le prestazioni delle query evitando un'analisi dell'indice che richiede un utilizzo intensivo delle risorse.
Query Optimizer archivia le statistiche per una tabella o una vista indicizzata in un oggetto statistiche. Per una tabella, l'oggetto statistiche viene creato in un indice o in un elenco di tabelle Colonne. L'oggetto statistiche include un'intestazione con metadati relativi alle statistiche, un istogramma con la distribuzione dei valori nella prima colonna chiave dell'oggetto statistiche e un vettore di densità per misurare la correlazione tra colonne. Motore di database è in grado di calcolare le stime della cardinalità con qualsiasi dato nell'oggetto statistiche. Per ulteriori informazioni, vedere Statistiche e stima della cardinalità (SQL Server).
Visualizza l'intestazione, l'istogramma e il vettore di densità in base ai dati memorizzati nell'oggetto statistiche. La sintassi consente di specificare una tabella o una vista indicizzata insieme a un nome di indice di destinazione, un nome di statistiche o un nome di colonna.
Aggiornamenti importanti nelle versioni precedenti di SQL Server:
-
A partire da SQL Server 2012 (11.x)SQL Server 2012 (11.x)SQL Server 2012 (11.x)SQL Server 2012 (11.x) Service Pack 1, è disponibile la sys.dm_db_stats_properties a gestione dinamica per recuperare a livello di codice le informazioni di intestazione contenute nell'oggetto statistiche per le informazioni non incrementali statistica.
-
A partire da SQL Server 2014 (12.x) Service Pack 2 e SQL Server 2012 (11.x) Service Pack 1, è disponibile la sys.dm_db_incremental_stats_properties visualizzazione a gestione dinamica per recuperare a livello di codice le informazioni di intestazione contenute nell'oggetto statistiche per le statistiche incrementali.
-
A partire da SQL Server 2016 (13.x) Service Pack 1 CU 2, è disponibile la sys.dm_db_stats_histogram visualizzazione a gestione dinamica per recuperare a livello di codice le informazioni sull'istogramma contenuto nell'oggetto statistiche.
-
Questa sintassi non è supportata dal pool SQL serverless in Azure Synapse Analytics.
-
Per altre informazioni sulle statistiche in Microsoft Fabric, vedere Statistiche.
Sintassi
per SQL Server e database SQL di Azure:
sintassi per Azure Synapse Analytics, piattaforma di strumenti analitici (PDW) e Microsoft Fabric:
argomenti
table_or_indexed_view_name
nome della tabella o della vista indicizzata per la quale visualizzare le informazioni statistiche.
table_name
nome della tabella che contiene le statistiche da visualizzare. La tabella non può essere una tabella esterna.
target
Nome dell'indice, delle statistiche o della colonna per cui visualizzare le informazioni statistiche. L'obiettivo è racchiuso tra parentesi, virgolette singole, virgolette doppie o nessuna virgolette.
- Se target è il nome di un indice o di statistiche esistenti in una tabella o in una vista indicizzata, vengono restituite le informazioni statistiche relative a questa destinazione.
- Se target è il nome di una colonna esistente ed esiste un oggetto statistiche creato automaticamente in questa colonna, vengono restituite informazioni su tale statistica creata automaticamente.
Se una statistica creata automaticamente non lo fa Esiste per una destinazione colonna, viene restituito il messaggio di errore 2767.
In Azure Synapse Analytics e nella piattaforma di strumenti analitici ( PDW) target non può essere un nome di colonna.
In Warehouse in Microsoft Fabric, target può essere il nome di una statistica dell'istogramma a colonna singola o di una colonna. Se viene utilizzato un nome di colonna per target , questo comando restituisce informazioni sulla distribuzione solo sulla statistica dell'istogramma generata automaticamente. Per visualizzare le informazioni su una statistica dell'istogramma creata manualmente, specificare il nome della statistica come target .
NO_INFOMSGS
Elimina tutti i messaggi informativi con livelli di gravità compresi tra 0 e 10.
Se si specifica una o più di queste opzioni, i set di risultati restituiti dall'istruzione vengono limitati all'opzione o alle opzioni specificate. Se non viene specificata alcuna opzione, vengono restituite tutte le informazioni statistiche.
è identificato a scopo informativo solo per gli scopi. Non supportato. La compatibilità futura non è garantita.
Set di risultati
Nella tabella seguente vengono descritte le colonne restituite nel set di risultati quando viene specificata STAT_HEADER.
Nome colonna | Descrizione |
---|---|
Nome | Nome dell'oggetto statistiche. |
Aggiornato | Data e ora dell'ultimo aggiornamento delle statistiche. La funzione STATS_DATE è un modo alternativo per recuperare queste informazioni. Per ulteriori informazioni, vedere la sezione Osservazioni in questa pagina. |
Righe | Numero totale di righe nella tabella o nella vista indicizzata al momento dell'ultimo aggiornamento delle statistiche. Se le statistiche sono filtrate o corrispondono a un indice filtrato, il numero di righe potrebbe essere inferiore al numero di righe della tabella. Per ulteriori informazioni, vedere Statistiche. |
Righe campionate Numero | totale di righe Campionato per calcoli statistici. Se Righe campionate < Righe, i risultati dell'istogramma e della densità visualizzati sono stime basate sulle righe campionate. |
Passi | Numero di passi nell'istogramma. Ogni passaggio si estende su un intervallo di valori di colonna seguiti da un valore di colonna con limite superiore. I passaggi dell'istogramma sono definiti nella prima colonna chiave delle statistiche. Il numero massimo di passaggi è 200. |
Densità | Calcolato come 1 / valori distinti per tutti i valori nella prima colonna chiave dell'oggetto statistiche, esclusi i valori limite dell'istogramma. Questo valore di densità non viene usato da Query Optimizer e viene visualizzato per garantire la compatibilità con le versioni precedenti a SQL Server 2008 (10.0.x). |
Lunghezza media della chiave | Numero medio di byte per valore per tutte le colonne chiave nell'oggetto statistiche. |
Indice stringa | Sì indica l'oggetto statistiche contiene statistiche di riepilogo delle stringhe per migliorare le stime della cardinalità per i predicati di query che utilizzano l'operatore LIKE; Per esempio. Le statistiche di riepilogo delle stringhe vengono memorizzate separatamente dall'istogramma e vengono create nella prima colonna chiave dell'oggetto statistiche quando è di tipo char , varchar , nchar , nvarchar , varchar(max) , nvarchar(max) , text o ntext. |
Predicato dell'espressione di filtro | per il sottoinsieme di righe della tabella incluse nell'oggetto statistiche. = statistiche non filtrate. Per ulteriori informazioni sui predicati filtrati, vedere Creare indici filtrati. Per ulteriori informazioni sulle statistiche filtrate, vedere Statistiche. |
Righe non filtrate | Numero totale di righe nella tabella prima dell'applicazione del filtro espressione. Se Espressione filtro è , è uguale a . |
Percentuale di campionamento persistente | Percentuale di campionamento persistente utilizzata 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 questa statistica. Si applica a: SQL Server 2016 (13.x) Service Pack 1 CU 4 |
Nella tabella seguente vengono descritte le colonne restituite nel set di risultati quando viene specificata DENSITY_VECTOR.
Nome colonna | Descrizione |
---|---|
Tutta la densità | La densità è 1 / valori distinti . I risultati visualizzano la densità per ogni prefisso di colonne nell'oggetto statistiche, una riga per densità. Un valore distinto è un elenco distinto dei valori di colonna per riga e per prefisso di colonna. Ad esempio, se l'oggetto statistiche contiene colonne chiave (A, B, C), I risultati riportano la densità delle distinte liste di valori in ciascuno di questi prefissi di colonna: (A), (A,B) e (A, B, C). Utilizzando il prefisso (A, B, C), ognuno di questi elenchi è un elenco di valori distinti: (3, 5, 6), (4, 4, 6), (4, 5, 6), (4, 5, 7). Utilizzando il prefisso (A, B), gli stessi valori di colonna dispongono di questi elenchi di valori distinti: (3, 5), (4, 4) e (4, 5) |
Lunghezza media | Lunghezza media, in byte, per memorizzare un elenco dei valori di colonna per il prefisso di colonna. Ad esempio, se i valori nell'elenco (3, 5, 6) richiedono ciascuno 4 byte, la lunghezza è di 12 byte. |
Colonne | Nomi delle colonne nel prefisso per le quali vengono visualizzate Tutte le densità e Lunghezza media. |
Nella tabella seguente vengono descritte le colonne restituite nel set di risultati quando viene specificata l'opzione HISTOGRAM.
RANGE_HI_KEY | Valore della colonna del limite superiore per un passaggio dell'istogramma. Il valore della colonna è anche chiamato valore chiave. |
RANGE_ROWS | Numero stimato di righe il cui valore di colonna rientra in un passaggio dell'istogramma, escluso il limite superiore. |
EQ_ROWS | Numero stimato di righe il cui valore di colonna è uguale al limite superiore del passaggio dell'istogramma. |
DISTINCT_RANGE_ROWS | Numero stimato di righe con un valore di colonna distinto all'interno di un passaggio dell'istogramma, escluso il limite superiore. |
AVG_RANGE_ROWS | Numero medio di righe con valori di colonna duplicati all'interno di un passaggio dell'istogramma, escluso il limite superiore. Quando DISTINCT_RANGE_ROWS è maggiore di 0, AVG_RANGE_ROWS viene calcolato dividendo RANGE_ROWS per DISTINCT_RANGE_ROWS. Quando DISTINCT_RANGE_ROWS è 0, AVG_RANGE_ROWS restituisce 1 per il passaggio dell'istogramma. |
La data di aggiornamento delle statistiche viene archiviata nell'oggetto blob delle 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 aggiornata è . Questo è il caso delle statistiche filtrate per le quali il predicato non restituisce alcuna riga o per le nuove tabelle vuote.
Istogramma
Un istogramma misura la frequenza di occorrenza per ogni valore distinto in un set di dati. Query Optimizer calcola un istogramma sui valori delle colonne nella prima colonna chiave dell'oggetto statistiche, selezionando i valori delle colonne campionando statisticamente le righe o eseguendo un'analisi completa di tutte le righe della tabella o della vista. Se l'istogramma viene creato da un set di righe campionato, i totali archiviati per il numero di righe e il numero di valori distinti sono stime e non devono essere interi.
Per creare il file Query Optimizer ordina i valori delle colonne, calcola il numero di valori che corrispondono a ogni valore di colonna distinto e quindi aggrega i valori delle colonne in un massimo di 200 passaggi contigui dell'istogramma. Ogni passaggio include un intervallo di valori di colonna seguito da un valore di colonna con limite superiore. L'intervallo include tutti i possibili valori di colonna compresi tra i valori limite, esclusi i valori limite stessi. Il più basso dei valori di colonna ordinati è il valore limite superiore per il primo passaggio dell'istogramma.
Il diagramma seguente mostra un istogramma con sei passaggi. L'area a sinistra del primo valore limite superiore è il primo passaggio.
Per ogni passaggio dell'istogramma:
- la linea in grassetto rappresenta il valore limite superiore (RANGE_HI_KEY) e il numero di volte in cui si verifica (EQ_ROWS)
- L'area continua a sinistra di RANGE_HI_KEY rappresenta l'intervallo di valori della colonna e il numero medio di volte in cui si verifica ciascun valore della colonna (AVG_RANGE_ROWS). Il AVG_RANGE_ROWS per il primo passaggio dell'istogramma è sempre 0.
- Le linee tratteggiate rappresentano i valori campionati utilizzati per stimare il numero totale di valori distinti nell'intervallo (DISTINCT_RANGE_ROWS) e il numero totale di valori nell'intervallo (RANGE_ROWS). Query Optimizer utilizza RANGE_ROWS e DISTINCT_RANGE_ROWS per calcolare AVG_RANGE_ROWS e non archivia i valori campionati.
Query Optimizer definisce i passaggi dell'istogramma in base alla loro significatività statistica. Utilizza un algoritmo di differenza massima per ridurre al minimo il numero di passaggi nell'istogramma massimizzando la differenza tra i valori limite. Il numero massimo di passaggi è 200. Il numero di passaggi dell'istogramma può essere inferiore al numero di valori distinti, anche per colonne con meno di 200 punti di contorno. Ad esempio, una colonna con 100 valori distinti può avere un istogramma con meno di 100 punti di confine.
Vettore di densità
Query Optimizer utilizza le densità per migliorare le stime della cardinalità per le query che restituiscono più colonne dalla stessa tabella o vista indicizzata. Il vettore di densità contiene una densità per ogni prefisso di colonne nell'oggetto statistiche. Ad esempio, se un oggetto statistiche ha le colonne chiave , e , la densità viene calcolata su ciascuno dei seguenti prefissi di colonna.
Prefisso di colonna | La densità calcolata sulle |
---|---|
righe con valori corrispondenti per | |
righe con valori corrispondenti per e | |
righe con valori corrispondenti per , e |
le limitazioni
non fornisce statistiche per gli indici spaziali né per gli indici columnstore ottimizzati per la memoria.
Autorizzazioni per SQL Server e database SQL
Per visualizzare l'oggetto statistiche, l'utente deve disporre dell'autorizzazione per la tabella.
Le Esistono i seguenti requisiti affinché le autorizzazioni SELECT siano sufficienti per eseguire il comando:
- Gli utenti devono disporre delle autorizzazioni per tutte le colonne dell'oggetto statistiche
- Gli utenti devono disporre dell'autorizzazione per tutte le colonne in una condizione di filtro (se presente)
- La tabella non può avere un criterio di sicurezza a livello di riga.
- Se una qualsiasi delle colonne all'interno di un oggetto statistiche è mascherata con regole di mascheramento dinamico dei dati, Oltre all'autorizzazione, l'utente deve disporre dell'autorizzazione o essere un membro del ruolo db_ddladmin.
Nelle versioni precedenti a SQL Server 2012 (11.x)SQL Server 2012 (11.x)SQL Server 2012 (11.x)Service Pack 1 (Service Pack 1), l'utente deve essere il proprietario della tabella oppure deve essere membro del ruolo predefinito del server sysadmin, del ruolo predefinito del database db_owner o del ruolo predefinito del database db_ddladmin.
Nota
Perripristinare il comportamento del servizio precedente a SQL Server 2012 (11.x)SQL Server 2012 (11.x)SQL Server 2012 (11.x)SQL Server 2012 (11.x).IT Comportamento Pack 1, utilizzare il flag di traccia 9485.
Le autorizzazioni per Azure Synapse Analytics e la piattaforma di strumenti analitici (PDW)
richiedono l'autorizzazione per la tabella o l'appartenenza al ruolo predefinito del server sysadmin, al ruolo predefinito del database db_owner o al ruolo predefinito del database db_ddladmin.
Limitazioni e restrizioni per Azure Synapse Analytics e la piattaforma di strumenti analitici (PDW)
mostra le statistiche memorizzate nel database a livello di nodo di controllo. Non vengono visualizzate le statistiche create automaticamente da SQL Server nei nodi di calcolo.
non è supportato nelle tabelle esterne.
In Microsoft Fabric, mostra solo i risultati per le statistiche dell'istogramma, non le statistiche ACE-*.
Esempi: SQL Server e Azure SQL Database
A. Restituiscono tutte le informazioni sulle statistiche
L'esempio seguente visualizza tutte le informazioni sulle statistiche per l'indice di la tabella nel database AdventureWorks2022.
B. Specificare l'opzione ISTOGRAMMA
In questo modo le informazioni statistiche visualizzate vengono limitate ai dati HISTOGRAM.
Esempi: Azure Synapse Analytics e la piattaforma di strumenti analitici (PDW)
C. Visualizzare il contenuto di un oggetto statistiche Nell'esempio
seguente viene creato un oggetto statistiche e quindi viene visualizzato il contenuto delle statistiche nella tabella nel database di esempio AdventureWorksPDW2022.
I risultati mostrano l'intestazione, il vettore di densità e parte dell'istogramma.