sys.dm_db_stats_properties (Transact-SQL)

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

Funktionen för sys.dm_db_stats_properties dynamisk hantering returnerar statistik för det angivna databasobjektet i den aktuella databasen.

För partitionerade tabeller, se även den liknande sys.dm_db_incremental_stats_properties.

Syntax

sys.dm_db_stats_properties (object_id, stats_id)  

Arguments

object_id

ID:t för objektet i den aktuella databasen. object_id är int.

stats_id

ID:t för statistik för den specificerade object_id. Du kan få statistik-ID:t från sys.stats dynamiska hanteringsvy. stats_id är int.

Tabellen returneras

Kolumnnamn Datatyp Description
object_id int ID för objektet (tabell eller indexerad vy).
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 Anmärkningar i den här artikeln.
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 unfiltered_rows är lika med värdet som returneras i kolumnen rows .
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 Sparad exempelprocent som används för statistikuppdateringar som inte uttryckligen anger en samplingsprocent. 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 och senare versioner

Anmärkningar

Funktionen returnerar sys.dm_db_stats_properties 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 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 inga data läss för att generera statistikdata skapas inte statistikbloben, datumet är inte tillgängligt och last_updated kolumnen är NULL. Detta villkor gäller för filtrerad statistik där predikatet inte returnerar några rader, eller för nya tomma tabeller.

Permissions

Du behöver SELECT behörigheter på statistikkolumner, eller så måste du äga tabellen, eller vara medlem i den sysadmin fasta serverrollen, den db_owner fasta databasrollen eller den db_ddladmin fasta databasrollen.

Examples

A. Enkelt exempel

Följande exempel ger information om statistiken för Person.Person tabellen i databasen AdventureWorks .

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

B. Returnera alla statistikegenskaper för en tabell

Följande exempel återger egenskaper för alla statistik som finns för tabellen Sales.SalesOrderDetail.

SELECT 
    OBJECT_SCHEMA_NAME(stat.object_id) AS schema_name,
    OBJECT_NAME(stat.object_id)        AS table_name,
    sp.stats_id, 
    stat.[name], 
    stat.filter_definition, 
    sp.last_updated, 
    sp.[rows], 
    sp.rows_sampled, 
    sp.steps,
    sp.unfiltered_rows, 
    sp.modification_counter   
FROM sys.stats AS stat   
OUTER APPLY sys.dm_db_stats_properties(stat.object_id, stat.stats_id) AS sp  
WHERE stat.object_id = OBJECT_ID(N'Sales.SalesOrderDetail')

C. Egenskaper för returstatistik 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 1 000 gånger sedan den senaste statistikuppdateringen.

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