Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Felügyelt Azure SQL-példány
Azure Synapse Analytics
SQL Analytics-végpont a Microsoft Fabricben
Raktár a Microsoft Fabricben
SQL-adatbázis a Microsoft Fabricben
A DBCC SHOW_STATISTICS parancs megjeleníti a jelenlegi lekérdezésoptimalizálási statisztikákat egy táblázat vagy indexelt nézet számára. A lekérdezésoptimalizáló statisztikák használatával becsüli meg a lekérdezés eredményének számosságát vagy sorainak számát, ami lehetővé teszi, hogy a Lekérdezésoptimalizáló kiváló minőségű lekérdezéstervet hozzon létre. A Lekérdezésoptimalizáló például számosságbecslésekkel választhatja ki az indexkeresési operátort a lekérdezési terv indexkeresési operátora helyett, így elkerülve az erőforrás-igényes indexvizsgálatot, javítva a lekérdezés teljesítményét.
A Lekérdezésoptimalizáló egy tábla vagy indexelt nézet statisztikáit egy statisztikai objektumban tárolja. Egy tábla esetében a statisztikai objektum egy indexen vagy egy táblaoszloplistán jön létre. A statisztikai objektum tartalmaz egy fejlécet a statisztikák metaadataival, egy hisztogramot a statisztikai objektum első kulcsoszlopában lévő értékek eloszlásával, valamint egy sűrűségvektort az oszlopközi korreláció méréséhez. Az adatbázismotor számosságbecsléseket képes kiszámítani a statisztikai objektum bármely adatával. További információ: Statistics és Cardinality Estimation (SQL Server).
DBCC SHOW_STATISTICS megjeleníti a fejlécet, a hisztogramot és a sűrűségvektort a statisztikai objektumban tárolt adatok alapján. A szintaxis lehetővé teszi táblázat vagy indexelt nézet megadását a célindex nevével, statisztikájával vagy oszlopnevével együtt.
Fontos frissítések az SQL Server korábbi verzióiban:
Az SQL Server 2012 (11.x) Service Pack 1 csomagtól kezdve a sys.dm_db_stats_properties dinamikus felügyeleti nézet programozott módon lekérheti a nem növekményes statisztikák statisztikai objektumában található fejlécadatokat.
Az SQL Server 2014 (12.x) Service Pack 2 és az SQL Server 2012 (11.x) Service Pack 1 csomagtól kezdve a sys.dm_db_incremental_stats_properties dinamikus felügyeleti nézet programozott módon lekérheti a statisztikai objektum fejlécadatait a növekményes statisztikákhoz.
Az SQL Server 2016 (13.x) Service Pack 1 CU 2-től kezdve a sys.dm_db_stats_histogram dinamikus felügyeleti nézet programozott módon lekérheti a statisztikai objektumban található hisztogramadatokat.
-
Ezt a szintaxist az Azure Synapse Analytics kiszolgáló nélküli SQL-készlete nem támogatja.
A Microsoft Fabric Data Warehouse statisztikáiról további információt a Statisztika című témakörben talál.
Transact-SQL szintaxis konvenciói
Szintaxis
Szintaxis az SQL Serverhez, az Azure SQL Database-hez és az SQL Database-hez a Fabricben:
DBCC SHOW_STATISTICS ( table_or_indexed_view_name , target )
[ WITH [ NO_INFOMSGS ] < option > [ , ...n ] ]
< option > ::=
STAT_HEADER | DENSITY_VECTOR | HISTOGRAM | STATS_STREAM
[ ; ]
Syntax for Azure Synapse Analytics, and Warehouse in Microsoft Fabric:
DBCC SHOW_STATISTICS ( table_name , target )
[ WITH { STAT_HEADER | DENSITY_VECTOR | HISTOGRAM } [ , ...n ] ]
[ ; ]
Érvek
table_or_indexed_view_name
Annak a táblázatnak vagy indexelt nézetnek a neve, amelyhez statisztikai adatokat szeretne megjeleníteni.
table_name
A megjelenítendő statisztikákat tartalmazó tábla neve. A tábla nem lehet külső tábla.
céladatbázis
Annak az indexnek, statisztikának vagy oszlopnak a neve, amelyhez statisztikai adatokat szeretne megjeleníteni. cél szögletes zárójelek, egyszeri idézőjelek, dupla idézőjelek vagy idézőjelek nélkül vannak megadva.
- Ha cél egy tábla vagy indexelt nézet meglévő indexének vagy statisztikájának neve, a rendszer visszaadja a célra vonatkozó statisztikai adatokat.
- Ha a cél egy meglévő oszlop neve, és egy automatikusan létrehozott statisztikai objektum található ezen az oszlopon, a rendszer visszaadja az automatikusan létrehozott statisztikai adatokat.
Ha nem létezik automatikusan létrehozott statisztika egy oszlopcélhoz, a rendszer a 2767-et jelző hibaüzenetet adja vissza.
Az Azure Synapse Analytics-ben a célpont nem lehet oszlop neve.
A Microsoft Fabric Warehouse-ban cél lehet egyoszlopos hisztogram-statisztika vagy oszlop neve. Ha egy oszlopnevet használ cél, ez a parancs csak az automatikusan létrehozott hisztogramstatisztikáról ad vissza terjesztési információkat. A manuálisan létrehozott hisztogram-statisztikák adatainak megtekintéséhez adja meg a statisztikai nevet cél.
NO_INFOMSGS
Letiltja a 0 és 10 közötti súlyossági szintű információs üzeneteket.
STAT_HEADER | DENSITY_VECTOR | HISZTOGRAM | STATS_STREAM [ , n ]
Egy vagy több beállítás megadása korlátozza az utasítás által visszaadott eredményhalmazokat a megadott beállításra vagy beállításokra. Ha nincs megadva beállítás, a rendszer minden statisztikai adatot visszaad.
STATS_STREAM csak tájékoztatási célokra van azonosítva. Nem támogatott. A jövőbeli kompatibilitás nem garantált.
Eredményhalmaz
Az alábbi táblázat a STAT_HEADER megadásakor visszaadott oszlopokat ismerteti.
| Oszlop neve | Leírás |
|---|---|
Name |
A statisztikai objektum neve. |
Updated |
A statisztikák legutóbbi frissítésének dátuma és időpontja. A STATS_DATE függvény alternatív módon kéri le ezeket az információkat. További információt a lap Megjegyzések szakaszában talál. |
Rows |
A táblázat vagy indexelt nézetben lévő sorok teljes száma a statisztikák legutóbbi frissítésekor. Ha a statisztikák szűrve vannak, vagy egy szűrt indexnek felelnek meg, a sorok száma kisebb lehet, mint a tábla sorainak száma. További információ: Statistics. |
Rows Sampled |
Statisztikai számításokhoz mintavételezett sorok teljes száma. Ha Rows Sampled<Rows, a megjelenített hisztogram és sűrűség eredményei a mintázott sorok alapján készült becslések. |
Steps |
A hisztogram lépéseinek száma. Minden lépés egy oszlopértéktartományra terjed ki, amelyet egy felső kötött oszlopérték követ. A hisztogram lépései a statisztika első kulcsoszlopán vannak definiálva. A lépések maximális száma 200. |
Density |
Számított 1/különböző értékek a statisztikai objektum első kulcsoszlopában lévő összes értékhez, kivéve a hisztogram határértékeit. Ezt Density az értéket a Query Optimizer nem használja, és visszafelé kompatibilitást biztosít az SQL Server 2008 (10.0.x) előtti verziókkal. |
Average Key Length |
Az értékenkénti bájtok átlagos száma a statisztikai objektum összes kulcsoszlopához. |
String Index |
Yes azt jelzi, hogy a statisztikai objektum tartalmaz string összefoglaló statisztikákat a lekérdezési predikátumok kardinalitási becsléseinek javítására, amelyek az LIKE operátort használják; például . WHERE ProductName LIKE '%Bike' A string összefoglaló statisztikák külön tárolódnak a hisztogramtól, és a statisztikai objektum első kulcsoszlopán hozzák létre, ha az a típus: char, varchar, nchar, nvarchar, varchar(max), nvarchar(max),text vagy ntext típusú, és nem használ UTF-8 összeállítást. |
Filter Expression |
A statisztikai objektumban szereplő táblázatsorok részhalmazának predikátuma.
NULL = nem szűrt statisztikák. A szűrt predikátumokról további információt a Szűrt indexek létrehozása című témakörben talál. A szűrt statisztikákról további információt a Statisztikacímű témakörben talál. |
Unfiltered Rows |
A szűrőkifejezés alkalmazása előtt a tábla sorainak teljes száma. Ha a szűrőkifejezés NULL, Unfiltered Rows egyenlő Rows. |
Persisted Sample Percent |
A statisztikai frissítésekhez használt, a mintavételezési százalékot nem explicit módon meg nem határozó statisztikai frissítésekhez használt megmaradó minta százalékos aránya. Ha az érték nulla, akkor nincs megőrzött minta százalékos értéke ehhez a statisztikai adathoz. Érvényes: SQL Server 2016 (13.x) Service Pack 1 CU 4 és újabb verziók. |
Az alábbi táblázat a megadott eredményhalmazban DENSITY_VECTOR visszaadott oszlopokat ismerteti.
| Oszlop neve | Leírás |
|---|---|
All Density |
A sűrűség 1/különböző értékek. Az eredmények sűrűséget jelenítenek meg a statisztikai objektum egyes oszlopelőtagjaihoz, sűrűségenként egy sorhoz. A különálló értékek soronként és oszlopelőtagonként eltérő oszlopértékek. Ha például a statisztikai objektum kulcsoszlopokat (A, B, C) tartalmaz, az eredmények az egyes oszlopelőtagok különböző értéklistáinak sűrűségét jelentik: (A), (A,B) és (A, B, C). Az előtag (A, B, C) használatával mindegyik lista külön értéklista: (3, 5, 6), (4, 4, 6), (4, 5, 6), (4, 5, 7). Az előtag (A, B) használatával ugyanazok az oszlopértékek a következő különböző értéklistákat tartalmaznak: (3, 5), (4, 4) és (4, 5) |
Average Length |
Average length, bájtokban, tárolja az oszlop előtagjának oszlopértékeinek listáját. Ha például a listában szereplő értékek (3, 5, 6) 4 bájtot igényelnek, a hossz 12 bájt. |
Columns |
Az oszlopok nevei az előtagban, amelyekhez All density és Average length jelenik meg. |
Az alábbi táblázat az eredményhalmazban a beállítás megadásakor HISTOGRAM visszaadott oszlopokat ismerteti.
| Oszlop neve | Leírás |
|---|---|
RANGE_HI_KEY |
Hisztogramlépés felső kötött oszlopértéke. Az oszlopértéket kulcsértéknek is nevezik. |
RANGE_ROWS |
Azon sorok becsült száma, amelyek oszlopértéke egy hisztogramlépésen belül esik, a felső korlát kivételével. |
EQ_ROWS |
Azon sorok becsült száma, amelyek oszlopértéke megegyezik a hisztogram lépés felső határával. |
DISTINCT_RANGE_ROWS |
A hisztogramlépésen belül eltérő oszlopértékkel rendelkező sorok becsült száma, a felső kötött kivételével. |
AVG_RANGE_ROWS |
Az ismétlődő oszlopértékekkel rendelkező sorok átlagos száma egy hisztogramlépésen belül, a felső kötött kivételével. Ha DISTINCT_RANGE_ROWS 0-nál nagyobb, AVG_RANGE_ROWS akkor a függvény a osztással RANGE_ROWSDISTINCT_RANGE_ROWSszámítja ki. Ha DISTINCT_RANGE_ROWS 0, AVG_RANGE_ROWS a hisztogram lépéshez 1 értéket ad vissza. |
Megjegyzések
A statisztikai frissítés dátuma a statisztikai blobobjektumban a hisztogram és sűrűségvektorvan tárolva, nem a metaadatokban. Ha a rendszer nem olvas be adatokat a statisztikai adatok létrehozásához, a statisztikai blob nem jön létre, a dátum nem érhető el, és az updated oszlop is.NULL Ez a helyzet olyan szűrt statisztikák esetében, amelyeknél a predikátum nem ad vissza sorokat, vagy új üres táblákat.
Annak meghatározására, hogy a lekérdezésoptimalizáló mely statisztikákat tölt be egy adott lekérdezés fordításakor, vizsgálja meg az StatisticsInfo elemet a lekérdezés tényleges végrehajtási tervének XML-jében. Ennek Statistics az elemnek target az attribútuma az érve.DBCC SHOW_STATISTICS További információért lásd: Meghatározzák, mely statisztikákat használt a lekérdezésoptimalizáló.
Hisztogram
A hisztogram az adathalmaz minden egyes különböző értékének előfordulási gyakoriságát méri. A lekérdezésoptimalizáló kiszámítja a statisztikai objektum első kulcsoszlopában lévő oszlopértékek hisztogramját, az oszlopértékeket a sorok statisztikai mintavételezésével vagy a tábla vagy nézet összes sorának teljes vizsgálatával választja ki. Ha a hisztogram egy mintául szolgáló sorkészletből jön létre, a sorok számának és a különböző értékek számának tárolt összegei becslések, és nem kell egész egész számoknak lenniük.
A hisztogram létrehozásához a lekérdezésoptimalizáló rendezi az oszlopértékeket, kiszámítja az egyes oszlopértékeknek megfelelő értékek számát, majd az oszlopértékeket legfeljebb 200 összefüggő hisztogramlépésre összesíti. Minden lépés tartalmaz egy oszlopértéktartományt, majd egy felső kötött oszlopértéket. A tartomány magában foglalja a határértékek közötti összes lehetséges oszlopértéket, kivéve magukat a határértékeket. A rendezett oszlopértékek közül a legalacsonyabb az első hisztogramlépés felső határértéke.
Az alábbi ábrán egy hat lépésből áll a hisztogram. Az első felső határérték bal oldalán található terület az első lépés.
Minden hisztogram lépésnél:
- A vastag vonal a felső határértéket (
RANGE_HI_KEY) és az előforduló hányszor (EQ_ROWS) jelzi - A bal
RANGE_HI_KEYoldalra lévő szilárd terület az oszlopértékek tartományát és az egyes oszlopértékek átlagosan hányszor fordul elő (AVG_RANGE_ROWS). Az első hisztogram lépés AVG_RANGE_ROWS mindig 0. - A szaggatott vonalak a mintavételi értékeket jelentik, amelyeket a különböző értékek teljes számának becslésére használnak a tartományban (
DISTINCT_RANGE_ROWS) és az értékek teljes számát a tartományban (RANGE_ROWS). A lekérdezésoptimalizáló aRANGE_ROWSésDISTINCT_RANGE_ROWSfüggvényt használja aAVG_RANGE_ROWSszámításhoz, de nem tárolja a mintavételezett értékeket.
A lekérdezésoptimalizáló a hisztogram lépéseit a statisztikai pontosságuknak megfelelően határozza meg. Maximális különbségi algoritmussal minimalizálja a hisztogram lépéseinek számát, miközben maximalizálja a határértékek közötti különbséget. A lépések maximális száma 200. A hisztogram lépéseinek száma kisebb lehet, mint a különböző értékek száma, még a 200-nál kevesebb határponttal rendelkező oszlopok esetében is. Egy 100 különböző értékkel rendelkező oszlop például 100-nál kevesebb határponttal rendelkező hisztogrammal rendelkezhet.
Sűrűségvektor
A lekérdezésoptimalizáló sűrűségek használatával növeli a számosság becslését azon lekérdezések esetében, amelyek ugyanazon tábla vagy indexelt nézetben több oszlopot ad vissza. A sűrűségvektor egy sűrűséget tartalmaz a statisztikai objektum egyes oszlopelőtagjaihoz. Ha például egy statisztikai objektumban a kulcsoszlopok CustomerId, ItemId és Price, a sűrűség kiszámítása az alábbi oszlopelőtagok mindegyikén történik.
| Oszlopelőtag | Sűrűség számítása: |
|---|---|
(CustomerId) |
A CustomerId egyező értékeket tartalmazó sorok |
(CustomerId, ItemId) |
A CustomerId és ItemId egyező értékekkel rendelkező sorok |
(CustomerId, ItemId, Price) |
A CustomerId, ItemIdés Price egyező értékekkel rendelkező sorok |
Korlátozások
DBCC SHOW_STATISTICS nem ad statisztikai adatokat a térbeli indexekhez és a memóriaoptimalizált oszlopcentrikus indexekhez.
Az SQL Server és az SQL Database engedélyei
A statisztikai objektum megtekintéséhez a felhasználónak rendelkeznie kell SELECT engedéllyel a táblában.
A következő követelmények vonatkoznak arra, SELECT hogy az engedélyek elegendőek legyenek a parancs futtatásához:
- A felhasználóknak engedélyekkel kell rendelkezniük a statisztikai objektum összes oszlopához.
- A felhasználóknak engedéllyel kell rendelkezniük egy szűrőfeltétel összes oszlopára (ha van ilyen).
- A tábla nem rendelkezhet sorszintű biztonsági szabályzattal.
- Ha a statisztikai objektum bármelyik oszlopa dinamikus adatmaszkolási szabályokkal van elfedve, a
SELECTengedély mellett a felhasználónak rendelkeznie kell aUNMASKengedéllyel, vagy a db_ddladmin szerepkör tagjának kell lennie.
Az SQL Server 2012 (11.x) Service Pack 1 szervizcsomag előtti verziókban a felhasználónak rendelkeznie kell a táblával, vagy a felhasználónak tagja kell lennie a sysadmin rögzített kiszolgálói szerepkörnek, a db_owner rögzített adatbázis-szerepkörnek vagy a db_ddladmin rögzített adatbázis-szerepkörnek. Ha vissza szeretné változtatni a viselkedést az SQL Server 2012 előtti (11.x) Service Pack 1 viselkedésre, használja a 9485-ös nyomkövetési jelzőt.
A Microsoft Fabric Data Warehouse és az SQL Analytics végpontjának engedélyei a Microsoft Fabricben
Ahhoz, hogy megtekinthesse a statisztikai objektumot a Fabric Data Warehouse-ban vagy az SQL Analytics-végpontban, a felhasználónak rendelkeznie kell a SELECT táblára vonatkozó engedéllyel, vagy a Viewer Fabric munkaterületi szerepkör tagjának vagy magasabb szerepkör-tagsággal kell rendelkeznie.
Permissions for Azure Synapse Analytics
DBCC SHOW_STATISTICS
SELECT engedélyt igényel a táblához vagy tagsághoz a sysadmin rögzített kiszolgálói szerepkörben, a db_owner rögzített adatbázis-szerepkörben vagy a db_ddladmin rögzített adatbázis-szerepkörben.
Limitations and Restrictions for Azure Synapse Analytics
DBCC SHOW_STATISTICS az Shell-adatbázisban a Control csomópont szintjén tárolt statisztikákat jeleníti meg. Nem jeleníti meg az SQL Server által automatikusan létrehozott statisztikákat a számítási csomópontokon.
DBCC SHOW_STATISTICS külső táblák nem támogatottak.
A Microsoft Fabric DBCC SHOW_STATISTICS Warehouse-ban csak a hisztogramstatisztikák eredményeit jeleníti meg, a statisztikákat nem ACE-* .
Példák: SQL Server, Azure SQL Database és SQL Database a Fabricben
Egy. Az összes statisztikai adat visszaadása
Az alábbi példa az AdventureWorks2025 adatbázis táblázatának indexének AK_Address_rowguid összes statisztikai információját Person.Address mutatja.
DBCC SHOW_STATISTICS ("Person.Address", AK_Address_rowguid);
GO
B. A HISZTOGRAM beállítás megadása
Ez a Customer_LastName megjelenített statisztikai adatokat a HISZTOGRAM-adatokra korlátozza.
DBCC SHOW_STATISTICS ("dbo.DimCustomer", Customer_LastName) WITH HISTOGRAM;
GO
Példák: Azure Synapse Analytics
C. Egy statisztikai objektum tartalmának megjelenítése
Az alábbi példa létrehoz egy statisztikai objektumot, majd megjeleníti a Customer_LastName statisztikáinak tartalmát a DimCustomer táblában az AdventureWorksPDW2022 mintaadatbázisban.
-- 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
Az eredmények a fejlécet, a sűrűségvektort és a hisztogram egy részét mutatják.
Kapcsolódó tartalom
- Statisztika
- Statisztikák a Microsoft Fabric Adattárházban
- sys.dm_db_stats_properties (Transact-SQL)
- sys.dm_db_stats_histogram (Transact-SQL)
- sys.dm_db_incremental_stats_properties (Transact-SQL)
- CREATE INDEX (Transact-SQL)
- CREATE STATISTICS (Transact-SQL)
- DROP STATISTICS (Transact-SQL)
- sys.sp_autostats (Transact-SQL)
- sys.sp_createstats (Transact-SQL)
- STATS_DATE (Transact-SQL)
- UPDATE UPDATE STATISTICS (Transact-SQL)