Megosztás a következőn keresztül:


DBCC SHOW_STATISTICS (Transact-SQL)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példányAzure Synapse AnalyticsElemzési platformrendszer (PDW)SQL Analytics-végpont a Microsoft FabricbenRaktár a Microsoft FabricbenSQL-adatbázis a Microsoft Fabricben

Táblázat vagy indexelt nézet aktuális lekérdezésoptimalizálási statisztikáit jeleníti meg. 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
[ ; ]

Az Azure Synapse Analytics, az Analytics Platform System (PDW) és a Microsoft Fabric Warehouse szintaxisa:

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él

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 and Analytics Platform Systemben (PDW) cél nem lehet oszlopnév.

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
Név A statisztikai objektum neve.
Frissül 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.
Sorok 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.
Mintavételezett sorok Statisztikai számításokhoz mintavételezett sorok teljes száma. Ha a mintául vett sorok < sorokat, a megjelenített hisztogram és sűrűség eredményei a mintául szolgáló sorok alapján lesznek megbecsülve.
Utaslépcső 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.
Sűrűség 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 a sűrűségértéket a Lekérdezésoptimalizáló nem használja, és az SQL Server 2008 (10.0.x) előtti verziókkal való kompatibilitás érdekében jelenik meg.
Kulcs átlagos hossza Az értékenkénti bájtok átlagos száma a statisztikai objektum összes kulcsoszlopához.
Sztringindex Igen, azt jelzi, hogy a statisztikai objektum sztringösszegző statisztikákat tartalmaz a LIKE operátort használó lekérdezési predikátumok számosságbecsléseinek javítása érdekében; például WHERE ProductName LIKE '%Bike'. A sztringösszegző statisztikák a hisztogramtól külön vannak tárolva, és a statisztikai objektum első kulcsoszlopán jönnek létre karakter, varchar, ncharnvarchar, varchar(max), nvarchar(max), szövegesvagy ntext..
Kifejezés szűrése 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.
Szűretlen sorok 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.
Megőrzött mintaszázad 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.

A következőkre vonatkozik: SQL Server 2016 (13.x) Service Pack 1 CU 4

Az alábbi táblázat a megadott eredményhalmazban DENSITY_VECTOR visszaadott oszlopokat ismerteti.

Oszlop neve Leírás
Minden sűrűség 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)
Átlagos hossz Átlagos hossz bájtban az oszlopelőtag oszlopértékeinek tárolásához. Ha például a listában szereplő értékek (3, 5, 6) 4 bájtot igényelnek, a hossz 12 bájt.
Oszlopok Azon oszlopok nevei az előtagban, amelyeknél az összes sűrűség és az átlagos hossz megjelenik.

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.

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.

Diagram a hisztogram mintául szolgáló oszlopértékekből való kiszámításának módjáról.

Minden hisztogram lépésnél:

  • A félkövér vonal a felső határértéket (RANGE_HI_KEY) és az előfordulások számát (EQ_ROWS) jelöli.
  • A RANGE_HI_KEY egyszínű területe az oszlopértékek tartományát és az egyes oszlopértékek előfordulásának átlagos számát (AVG_RANGE_ROWS) jelöli. Az első hisztogram lépés AVG_RANGE_ROWS mindig 0.
  • A pontozott vonalak a tartomány különböző értékeinek teljes számának (DISTINCT_RANGE_ROWS) és a tartomány értékeinek teljes számának (RANGE_ROWS) becsléséhez használt mintaértékeket jelölik. A lekérdezésoptimalizáló RANGE_ROWS és DISTINCT_RANGE_ROWS használ a AVG_RANGE_ROWS kiszámításához, és nem tárolja a mintául szolgáló é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 SELECT engedély mellett a felhasználónak rendelkeznie kell a UNMASK engedé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

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.

Engedélyek az Azure Synapse Analytics and Analytics Platform Systemhez (PDW)

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.

Az Azure Synapse Analytics and Analytics Platform System (PDW) korlátozásai és korlátozásai

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 Person.Address összes statisztikai információját AK_Address_rowguid 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 and Analytics Platform System (PDW)

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.

Képernyőkép a DBCC SHOW_STATISTICS eredményeiről.