SHOW_STATISTICS DBCC (Transact-SQL)
platí pro:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Platform Platform System (PDW)
koncový bod SQL Analytics ve službě Microsoft Fabric
Warehouse v Microsoft Fabric
Zobrazí aktuální statistiku optimalizace dotazů pro tabulku nebo indexované zobrazení. Optimalizátor dotazů používá statistiky k odhadu kardinality nebo počtu řádků ve výsledku dotazu, což umožňuje optimalizátoru dotazů vytvořit plán dotazů s vysokou kvalitou. Optimalizátor dotazů může například použít odhady kardinality k výběru operátoru hledání indexu místo operátoru prohledávání indexu v plánu dotazu, což zlepšuje výkon dotazů tím, že se vyhne kontrole indexu náročného na prostředky.
Optimalizátor dotazů ukládá statistiky pro tabulku nebo indexované zobrazení v objektu statistiky. Pro tabulku se objekt statistiky vytvoří buď v indexu, nebo v seznamu sloupců tabulky. Objekt statistiky obsahuje záhlaví s metadaty o statistikách, histogram s rozdělením hodnot v prvním klíčovém sloupci objektu statistiky a vektor hustoty pro měření korelace mezi sloupci. Databázový stroj dokáže vypočítat odhady kardinality s libovolnými daty v objektu statistiky. Další informace naleznete v tématu statistiky a odhad kardinality (SQL Server).
DBCC SHOW_STATISTICS
zobrazí záhlaví, histogram a vektor hustoty na základě dat uložených v objektu statistiky. Syntaxe umožňuje zadat tabulku nebo indexované zobrazení spolu s názvem cílového indexu, názvem statistiky nebo názvem sloupce.
Důležité aktualizace v předchozích verzích SQL Serveru:
Od verze SQL Server 2012 (11.x) Service Pack 1 je k dispozici zobrazení dynamické správy sys.dm_db_stats_properties pro programové načtení informací hlaviček obsažených v objektu statistiky pro nekrementální statistiky.
Počínaje aktualizací SQL Server 2014 (12.x) Service Pack 2 a SQL Server 2012 (11.x) Service Pack 1 je k dispozici sys.dm_db_incremental_stats_properties dynamické zobrazení správy pro programové načtení informací hlaviček obsažených v objektu statistiky pro přírůstkové statistiky.
Od verze SQL Server 2016 (13.x) Service Pack 1 CU 2 je k dispozici zobrazení dynamické správy sys.dm_db_stats_histogram pro programové načtení informací histogramu obsažených v objektu statistiky.
-
Tato syntaxe není podporována bezserverovým fondem SQL ve službě Azure Synapse Analytics.
Další informace o statistikách v Microsoft Fabric naleznete v tématu Statistika.
Syntax
Syntaxe pro SQL Server a Azure SQL Database:
DBCC SHOW_STATISTICS ( table_or_indexed_view_name , target )
[ WITH [ NO_INFOMSGS ] < option > [ , ...n ] ]
< option > ::=
STAT_HEADER | DENSITY_VECTOR | HISTOGRAM | STATS_STREAM
[ ; ]
Syntaxe pro Azure Synapse Analytics, systém PDW (Analytics Platform System) a Microsoft Fabric:
DBCC SHOW_STATISTICS ( table_name , target )
[ WITH { STAT_HEADER | DENSITY_VECTOR | HISTOGRAM } [ , ...n ] ]
[ ; ]
Argumenty
table_or_indexed_view_name
Název tabulky nebo indexovaného zobrazení, pro které se mají zobrazit informace o statistikách.
table_name
Název tabulky, která obsahuje statistiku, která se má zobrazit. Tabulka nemůže být externí tabulkou.
cílové
Název indexu, statistiky nebo sloupce, pro který se mají zobrazit informace o statistikách. cílové jsou uzavřeny do závorek, jednoduchých uvozovek, dvojitých uvozovek nebo žádných uvozovek.
- Pokud cílový je název existujícího indexu nebo statistiky v tabulce nebo indexované zobrazení, vrátí se informace o statistikách o tomto cíli.
- Pokud cílový je název existujícího sloupce a automaticky vytvořený objekt statistiky pro tento sloupec existuje, vrátí se informace o této automaticky vytvořené statistice.
Pokud pro cíl sloupce neexistuje automaticky vytvořená statistika, vrátí se chybová zpráva 2767.
V systému Azure Synapse Analytics a Platform Platform System (PDW) cíl nemůže být název sloupce.
Ve službě Warehouse v Microsoft Fabric cílit může být název statistiky histogramu s jedním sloupcem nebo sloupce. Pokud se pro cílovýpoužívá název sloupce, vrátí tento příkaz informace o distribuci pouze o automaticky generované statistikě histogramu. Pokud chcete zobrazit informace o ručně vytvořené statistikě histogramu, zadejte název statistiky jako cílový.
NO_INFOMSGS
Potlačí všechny informační zprávy, které mají úrovně závažnosti od 0 do 10.
STAT_HEADER | DENSITY_VECTOR | HISTOGRAM | STATS_STREAM [ , n ]
Zadání jedné nebo více těchto možností omezuje sady výsledků vrácené příkazem na zadanou možnost nebo možnosti. Pokud nejsou zadány žádné možnosti, vrátí se všechny informace o statistikách.
STATS_STREAM
je určen pouze pro informační účely. Nepodporuje se. Budoucí kompatibilita není zaručena.
Sada výsledků
Následující tabulka popisuje sloupce vrácené v sadě výsledků při zadání STAT_HEADER.
Název sloupce | Popis |
---|---|
Jméno | Název objektu statistiky. |
Aktualizovaný | Datum a čas poslední aktualizace statistiky Funkce STATS_DATE představuje alternativní způsob načtení těchto informací. Další informace najdete v části Poznámky na této stránce. |
Řádky | Celkový počet řádků v tabulce nebo indexované zobrazení při poslední aktualizaci statistiky Pokud jsou statistiky filtrované nebo odpovídají filtrovanému indexu, může být počet řádků menší než počet řádků v tabulce. Další informace naleznete v tématu Statistika. |
Vzorkované řádky | Celkový počet řádků vzorkovaných pro výpočty statistik. Pokud řádky vzorkované < řádky, zobrazí se histogram a výsledky hustoty odhady na základě vzorkovaných řádků. |
Schody | Počet kroků v histogramu Každý krok zahrnuje oblast hodnot sloupců následovanou hodnotou horního vázaného sloupce. Kroky histogramu jsou definovány v prvním klíčovém sloupci statistiky. Maximální počet kroků je 200. |
Hustota | Vypočítáno jako 1 / jedinečné hodnoty pro všechny hodnoty v prvním klíčovém sloupci objektu statistiky s výjimkou hodnot hranic histogramu. Tato hodnota hustoty není používána optimalizátorem dotazů a zobrazuje se kvůli zpětné kompatibilitě s verzemi před SQL Serverem 2008 (10.0.x). |
Průměrná délka klíče | Průměrný počet bajtů na hodnotu pro všechny klíčové sloupce v objektu statistiky. |
Index řetězců | Ano označuje, že objekt statistiky obsahuje souhrnné statistiky řetězců ke zlepšení odhadů kardinality pro predikáty dotazu, které používají operátor LIKE; například WHERE ProductName LIKE '%Bike' . Souhrnné statistiky řetězců se ukládají odděleně od histogramu a jsou vytvořeny v prvním klíčovém sloupci objektu statistiky, pokud je typ znak, varchar, nchar, nvarchar, varchar(max), nvarchar(max), textnebo ntext.. |
Výraz filtru | Predikát pro podmnožinu řádků tabulky zahrnutých v objektu statistiky.
NULL = nefiltrované statistiky. Další informace o filtrovaných predikátech najdete v tématu Vytvoření filtrovaných indexů. Další informace o filtrovaných statistikách naleznete v tématu Statistika. |
Nefiltrované řádky | Celkový počet řádků v tabulce před použitím výrazu filtru Pokud je výraz filtru NULL , Unfiltered Rows se rovná Rows . |
Trvalé procento vzorku | Trvalé procento vzorku použité pro aktualizace statistiky, které explicitně nezadávají procento vzorkování. Pokud je hodnota nula, není pro tuto statistiku nastaveno žádné trvalé procento vzorku. platí pro: SQL Server 2016 (13.x) Service Pack 1 CU 4 |
Následující tabulka popisuje sloupce vrácené v sadě výsledků při zadání DENSITY_VECTOR.
Název sloupce | Popis |
---|---|
Veškerá hustota | Hustota je 1 / jedinečných hodnot. Výsledky zobrazují hustotu pro každou předponu sloupců v objektu statistiky, jeden řádek na hustotu. Jedinečná hodnota je jedinečný seznam hodnot sloupců na řádek a předponu sloupců. Pokud například objekt statistiky obsahuje klíčové sloupce (A, B, C), výsledky hlásí hustotu jedinečných seznamů hodnot v každé z těchto předpon sloupců: (A), (A,B) a (A, B, C). Pomocí předpony (A, B, C) je každý z těchto seznamů jedinečný seznam hodnot: (3, 5, 6), (4, 4, 6), (4, 5, 6), (4, 5, 7). Při použití předpony (A, B) mají stejné hodnoty sloupců tyto seznamy jedinečných hodnot: (3, 5), (4, 4) a (4, 5) |
Průměrná délka | Průměrná délka v bajtech pro uložení seznamu hodnot sloupců pro předponu sloupce. Pokud například hodnoty v seznamu (3, 5, 6) vyžadují 4 bajty, je délka 12 bajtů. |
Sloupce | Názvy sloupců v předponě, pro které se zobrazí Všechna hustota a Průměrná délka. |
Následující tabulka popisuje sloupce vrácené v sadě výsledků při zadání možnosti HISTOGRAM.
Název sloupce | Popis |
---|---|
RANGE_HI_KEY | Hodnota horního vázaného sloupce pro krok histogramu Hodnota sloupce se také nazývá hodnota klíče. |
RANGE_ROWS | Odhadovaný počet řádků, jejichž hodnota sloupce spadá do kroku histogramu s výjimkou horní hranice |
EQ_ROWS | Odhadovaný počet řádků, jejichž hodnota sloupce se rovná horní hranici kroku histogramu. |
DISTINCT_RANGE_ROWS | Odhadovaný počet řádků s jedinečnou hodnotou sloupce v kroku histogramu s výjimkou horní hranice |
AVG_RANGE_ROWS | Průměrný početřádkůch Pokud je DISTINCT_RANGE_ROWS větší než 0, AVG_RANGE_ROWS se vypočítá vydělením RANGE_ROWS DISTINCT_RANGE_ROWS. Pokud je DISTINCT_RANGE_ROWS 0, AVG_RANGE_ROWS vrátí hodnotu 1 pro krok histogramu. |
Poznámky
Datum aktualizace statistiky je uloženo v objektu blob statistiky statistiky společně s histogramem a vektor hustoty, ne v metadatech. Pokud nejsou načtena žádná data ke generování statistik, objekt blob statistiky se nevytvořil, datum není k dispozici a aktualizovaný sloupec je NULL
. Toto je případ filtrovaných statistik, pro které predikát nevrací žádné řádky ani pro nové prázdné tabulky.
Histogram
Histogram měří četnost výskytů pro každou jedinečnou hodnotu v sadě dat. Optimalizátor dotazů vypočítá histogram hodnot sloupců v prvním klíčovém sloupci objektu statistiky a vybere hodnoty sloupců statisticky vzorkováním řádků nebo provedením úplné kontroly všech řádků v tabulce nebo zobrazení. Pokud se histogram vytvoří ze vzorek sady řádků, uložené součty pro počet řádků a počet jedinečných hodnot jsou odhady a nemusí být celá celá čísla.
Pokud chcete vytvořit histogram, optimalizátor dotazu seřadí hodnoty sloupců, vypočítá počet hodnot, které odpovídají každé jedinečné hodnotě sloupce, a potom agreguje hodnoty sloupců do maximálně 200 souvislých kroků histogramu. Každý krok obsahuje rozsah hodnot sloupců následovaných hodnotou horního vázaného sloupce. Oblast zahrnuje všechny možné hodnoty sloupců mezi hodnotami hranic, s výjimkou samotných hodnot hranic. Nejnižší z hodnot seřazených sloupců je horní hraniční hodnota prvního kroku histogramu.
Následující diagram znázorňuje histogram se šesti kroky. Oblast vlevo od první hodnoty horní hranice je prvním krokem.
Pro každý krok histogramu:
- Tučná čára představuje hodnotu horní hranice (RANGE_HI_KEY) a počet výskytů (EQ_ROWS)
- Plná oblast vlevo od RANGE_HI_KEY představuje rozsah hodnot sloupců a průměrný počet výskytů každé hodnoty sloupce (AVG_RANGE_ROWS). AVG_RANGE_ROWS prvního kroku histogramu je vždy 0.
- Tečkované čáry představují vzorek hodnot použitých k odhadu celkového počtu jedinečných hodnot v oblasti (DISTINCT_RANGE_ROWS) a celkového počtu hodnot v oblasti (RANGE_ROWS). Optimalizátor dotazů používá RANGE_ROWS a DISTINCT_RANGE_ROWS k výpočtu AVG_RANGE_ROWS a neukládá vzorkované hodnoty.
Optimalizátor dotazů definuje kroky histogramu podle jejich statistického významu. Používá algoritmus maximálního rozdílu k minimalizaci počtu kroků v histogramu při maximalizaci rozdílu mezi hodnotami hranic. Maximální počet kroků je 200. Počet kroků histogramu může být menší než počet jedinečných hodnot, a to i u sloupců s méně než 200 hraničními body. Například sloupec s 100 jedinečnými hodnotami může mít histogram s méně než 100 hraničními body.
Vektor hustoty
Optimalizátor dotazů používá hustoty k vylepšení odhadů kardinality pro dotazy, které vracejí více sloupců ze stejné tabulky nebo indexovaného zobrazení. Vektor hustoty obsahuje jednu hustotu pro každou předponu sloupců v objektu statistiky. Pokud má například objekt statistiky klíčové sloupce CustomerId
, ItemId
a Price
, hustota se vypočítá na každé z následujících předpon sloupců.
Předpona sloupce | Hustota vypočítaná na |
---|---|
(CustomerId) |
Řádky s odpovídajícími hodnotami pro CustomerId |
(CustomerId, ItemId) |
Řádky s odpovídajícími hodnotami pro CustomerId a ItemId |
(CustomerId, ItemId, Price) |
Řádky s odpovídajícími hodnotami pro CustomerId , ItemId a Price |
Omezení
DBCC SHOW_STATISTICS
neposkytuje statistiky pro prostorové indexy ani indexy columnstore optimalizované pro paměť.
Oprávnění pro SQL Server a SLUŽBU SQL Database
Aby uživatel mohl zobrazit objekt statistiky, musí mít k tabulce oprávnění SELECT
.
Existují následující požadavky pro oprávnění SELECT, aby byla dostatečná ke spuštění příkazu:
- Uživatelé musí mít oprávnění ke všem sloupcům v objektu statistiky.
- Uživatelé musí mít oprávnění ke všem sloupcům v podmínce filtru (pokud existuje).
- Tabulka nemůže mít zásady zabezpečení na úrovni řádků.
- Pokud je některý ze sloupců v objektu statistiky maskován pravidly dynamického maskování dat, kromě oprávnění
SELECT
musí mít uživatel oprávněníUNMASK
nebo být členem db_ddladmin role.
Ve verzích starších než SQL Server 2012 (11.x) Service Pack 1 musí uživatel vlastnit tabulku nebo uživatel musí být členem správce systému pevné role serveru, db_owner pevné databázové role nebo db_ddladmin pevné databázové role.
Poznámka
Chcete-li změnit chování zpět na chování před SQL Serverem 2012 (11.x) Service Pack 1, použijte příznak trasování 9485.
Oprávnění pro Azure Synapse Analytics a systém platformy Analytics (PDW)
DBCC SHOW_STATISTICS
vyžaduje SELECT
oprávnění k tabulce nebo členství v pevné roli serveru správce systému, db_owner pevné databázové roli nebo db_ddladmin pevné databázové roli.
Omezení a omezení pro Azure Synapse Analytics a Platform Platform System (PDW)
DBCC SHOW_STATISTICS
zobrazuje statistiky uložené v databázi Shell
na úrovni řídicího uzlu. Nezobrazuje statistiky, které SQL Server automaticky vytváří na výpočetních uzlech.
DBCC SHOW_STATISTICS
se u externích tabulek nepodporuje.
V Microsoft Fabric DBCC SHOW_STATISTICS
zobrazuje výsledky pouze pro statistiky histogramu, nikoli statistiky ACE-*.
Příklady: SQL Server a Azure SQL Database
A. Vrácení všech informací o statistikách
Následující příklad zobrazí všechny informace o statistikách pro AK_Address_rowguid
index tabulky Person.Address
v databázi AdventureWorks2022.
DBCC SHOW_STATISTICS ("Person.Address", AK_Address_rowguid);
GO
B. Určení možnosti HISTOGRAM
Tím se omezí informace o statistikách zobrazované pro Customer_LastName
na data HISTOGRAMu.
DBCC SHOW_STATISTICS ("dbo.DimCustomer", Customer_LastName) WITH HISTOGRAM;
GO
Příklady: Azure Synapse Analytics a Analytický platformový systém (PDW)
C. Zobrazení obsahu jednoho objektu statistiky
Následující příklad vytvoří objekt statistiky a pak zobrazí obsah Customer_LastName
statistiky DimCustomer
tabulky v AdventureWorksPDW2022 ukázkové databázi.
-- Uses AdventureWorksPDW
--First, create a statistics object
CREATE STATISTICS Customer_LastName
ON AdventureWorksPDW2012.dbo.DimCustomer (LastName);
GO
DBCC SHOW_STATISTICS ("dbo.DimCustomer", Customer_LastName);
GO
Výsledky zobrazují záhlaví, vektor hustoty a část histogramu.
Viz také
- statistiky
- statistiky v Microsoft Fabric
- sys.dm_db_stats_properties (Transact-SQL)
- sys.dm_db_stats_histogram (Transact-SQL)
- sys.dm_db_incremental_stats_properties (Transact-SQL)
Další kroky
- CREATE INDEX (Transact-SQL)
- CREATE STATISTICS (Transact-SQL)
- DROP STATISTICS (Transact-SQL)
- sp_autostats (Transact-SQL)
- sp_createstats (Transact-SQL)
- STATS_DATE (Transact-SQL)
- UPDATE STATISTICS (Transact-SQL)