sys.dm_db_stats_properties (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-databas i Microsoft Fabric

Returnerar egenskaper för statistik för det specificerade databasobjektet (tabell eller indexerad vy) i den aktuella SQL Server-databasen. För partitionerade tabeller, se den liknande sys.dm_db_incremental_stats_properties.

Syntax

sys.dm_db_stats_properties (object_id, stats_id)  

Arguments

object_id
Är ID:t för objektet i den aktuella databasen för vilket egenskaper hos en av dess statistik efterfrågas. object_id är int.

stats_id
Är ID:t för statistik för den angivna object_id. Statistik-ID:t kan hämtas från den dynamiska hanteringsvyn sys.stats . stats_id är int.

Tabell returnerad

Kolumnnamn Datatyp Description
object_id int ID för objektet (tabell eller indexerad vy) för vilket egenskaperna för statistikobjektet ska returneras.
stats_id int ID för statistikobjektet. Är unikt i tabellen eller i indexvyn. Mer information finns i sys.stats (Transact-SQL).
last_updated datetime2 Datum och tid för att statistikobjektet senast uppdaterades. Mer information finns i avsnittet Kommentarer på den här sidan.
rows bigint Totalt antal rader i tabellen eller den indexerade vyn när statistiken senast uppdaterades. Om statistiken filtreras eller motsvarar ett filtrerat index kan antalet rader vara mindre än antalet rader i tabellen.
rows_sampled bigint Totalt antal rader som samplas för statistikberäkningar.
steps int Antal steg i histogrammet. Mer information finns i DBCC SHOW_STATISTICS (Transact-SQL).
unfiltered_rows bigint Totalt antal rader i tabellen innan filteruttrycket appliceras (för filtrerad statistik). Om statistik inte filtreras är unfiltered_rows lika med värdet som returneras i raderkolumnen.
modification_counter bigint Totalt antal ändringar för den ledande statistikkolumnen (kolumnen som histogrammet byggs på) sedan senaste uppdateringen av statistiken.

Minnesoptimerade tabeller: från och med SQL Server 2016 (13.x) och i Azure SQL Database innehåller denna kolumn: totalt antal ändringar för tabellen sedan senaste gången statistik uppdaterades eller databasen startades om.
persisted_sample_percent float Persistent urvalsprocent används för statistikuppdateringar som inte uttryckligen specificerar en urvalsprocent. Om värdet är noll anges ingen bevarad exempelprocentsats för den här statistiken.

Gäller för: SQL Server 2016 (13.x) SP1 CU4

Anmärkningar

sys.dm_db_stats_properties returnerar en tom radmängd under något av följande villkor:

  • object_id eller stats_id är NULL.
  • Det angivna objektet hittas inte eller motsvarar inte en tabell eller indexerad vy.
  • Det angivna statistik-ID:t motsvarar inte existerande statistik för det angivna objekt-ID:t.
  • Den nuvarande användaren har inte behörighet att se statistikobjektet.

Detta beteende möjliggör säker användning av sys.dm_db_stats_properties när de korsappliceras på rader i vyer som sys.objects och sys.stats.

Uppdateringsdatumet för statistik lagras i -statistikblobobjektet tillsammans med histogrammet och densitetsvektor, inte i metadata. När ingen data läses för att generera statistikdata skapas inte statistikblobben, datumet är inte tillgängligt och kolumnen last_updated är NULL. Detta gäller för filtrerad statistik där predikatet inte returnerar några rader, eller för nya tomma tabeller.

Permissions

Kräver att användaren har valbehörigheter på statistikkolumner eller att användaren äger tabellen eller är medlem i den sysadmin fasta serverrollen, den db_owner fasta databasrollen eller den db_ddladmin fasta databasrollen.

Examples

A. Enkelt exempel

Följande exempel returnerar statistiken för Person.Person tabellen i AdventureWorks-databasen.

SELECT * FROM sys.dm_db_stats_properties (object_id('Person.Person'), 1);

B. Returnerar alla statistikegenskaper för en tabell

Följande exempel returnerar egenskaper för alla statistik som finns för tabellen TEST.

SELECT sp.stats_id, name, filter_definition, last_updated, rows, rows_sampled, steps, unfiltered_rows, modification_counter   
FROM sys.stats AS stat   
CROSS APPLY sys.dm_db_stats_properties(stat.object_id, stat.stats_id) AS sp  
WHERE stat.object_id = object_id('TEST');  

C. Returnerar statistikegenskaper för ofta modifierade objekt

Följande exempel visar alla tabeller, indexerade vyer och statistik i den aktuella databasen där den ledande kolumnen har ändrats mer än 1000 gånger sedan den senaste statistikuppdateringen.

SELECT obj.name, obj.object_id, stat.name, stat.stats_id, last_updated, modification_counter  
FROM sys.objects AS obj   
INNER JOIN sys.stats AS stat ON stat.object_id = obj.object_id  
CROSS APPLY sys.dm_db_stats_properties(stat.object_id, stat.stats_id) AS sp  
WHERE modification_counter > 1000;  

Se även

DBCC-SHOW_STATISTICS (Transact-SQL)
sys.stats (Transact-SQL)
Objektrelaterade dynamiska hanteringsvyer och funktioner (Transact-SQL)
Vyer och funktioner för dynamisk hantering (Transact-SQL)
sys.dm_db_incremental_stats_properties (Transact-SQL)
sys.dm_db_stats_histogram (Transact-SQL)