sys.dm_db_stats_properties (Transact-SQL)

van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-database in Microsoft Fabric

De sys.dm_db_stats_properties dynamische beheerfunctie geeft statistieken terug voor het opgegeven databaseobject in de huidige database.

Voor gepartitioneerde tabellen zie ook de vergelijkbare sys.dm_db_incremental_stats_properties.

Syntaxis

sys.dm_db_stats_properties (object_id, stats_id)  

Arguments

object_id

De ID van het object in de huidige database. object_id is int.

stats_id

De ID van statistieken voor de gespecificeerde object_id. Je kunt de statistiek-ID krijgen vanuit de sys.stats dynamische beheerweergave. stats_id is int.

Tabel geretourneerd

Kolomnaam Gegevenstype Description
object_id int ID van het object (tabel of geïndexeerde weergave).
stats_id int Id van het statistiekenobject. Is uniek in de tabel of geïndexeerde weergave. Zie sys.stats (Transact-SQL)voor meer informatie.
last_updated datetime2 Datum en tijd waarop het statistiekobject voor het laatst is bijgewerkt. Zie de sectie Opmerkingen in dit artikel voor meer informatie.
rows bigint Totaal aantal rijen in de tabel of geïndexeerde weergave toen statistieken voor het laatst werden bijgewerkt. Als de statistieken worden gefilterd of overeenkomen met een gefilterde index, kan het aantal rijen kleiner zijn dan het aantal rijen in de tabel.
rows_sampled bigint Totaal aantal rijen dat is gesampleerd voor berekeningen van statistieken.
steps int Aantal stappen in het histogram. Zie DBCC-SHOW_STATISTICS (Transact-SQL)voor meer informatie.
unfiltered_rows bigint Totaal aantal rijen in de tabel voordat de filterexpressie wordt toegepast (voor gefilterde statistieken). Als statistieken niet gefilterd zijn, unfiltered_rows is gelijk aan de waarde die in de rows kolom wordt teruggegeven.
modification_counter bigint Totaal aantal aanpassingen voor de leidende statistiekkolom (de kolom waarop het histogram is gebouwd) sinds de laatste keer dat statistieken werden bijgewerkt.

Geheugen-geoptimaliseerde tabellen: vanaf SQL Server 2016 (13.x) en in Azure SQL Database bevat deze kolom: het totaal aantal wijzigingen voor de tabel sinds de laatste keer dat statistieken werden bijgewerkt of de database opnieuw werd opgestart.
persisted_sample_percent float Persistent steekproefpercentage dat wordt gebruikt voor statistische updates die niet expliciet een steekproefpercentage opgeven. Als de waarde nul is, wordt er geen persistent steekproefpercentage ingesteld voor deze statistiek.

Van toepassing op: SQL Server 2016 (13.x) SP1 CU4 en latere versies

Opmerkingen

De sys.dm_db_stats_properties functie geeft een lege rijset terug onder een van de volgende voorwaarden:

  • object_id of stats_id is NULL.
  • Het opgegeven object wordt niet gevonden of komt niet overeen met een tabel of geïndexeerde weergave.
  • De gespecificeerde statistiek-ID komt niet overeen met bestaande statistieken voor de opgegeven object-ID.
  • De huidige gebruiker heeft geen rechten om het statistiekobject te bekijken.

Dit gedrag maakt veilig gebruik mogelijk van sys.dm_db_stats_properties wanneer kruis toegepast op rijen in weergaven zoals sys.objects en sys.stats.

De updatedatum van statistieken wordt samen met het histogram en de dichtheidsvector opgeslagen in het blobobject voor statistieken, niet in de metagegevens. Wanneer er geen gegevens worden gelezen om statistiekengegevens te genereren, wordt de blob voor statistieken niet gemaakt, is de datum niet beschikbaar en is last_updatedde NULL kolom . Deze voorwaarde geldt voor gefilterde statistieken waarbij het predicaat geen rijen teruggeeft, of voor nieuwe lege tabellen.

Permissions

Je hebt rechten nodig SELECT op statistiekkolommen, of je moet eigenaar zijn van de tabel, of lid zijn van de sysadmin vaste serverrol, de db_owner vaste databaserol of de db_ddladmin vaste databaserol.

Voorbeelden

Eén. Eenvoudig voorbeeld

Het volgende voorbeeld geeft informatie over de statistieken voor de Person.Person tabel in de AdventureWorks database.

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

B. Geef alle statistische eigenschappen terug voor een tabel

Het volgende voorbeeld geeft eigenschappen van alle bestaande statistieken voor de tabel 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. Return-statistiekeigenschappen voor vaak gewijzigde objecten

Het volgende voorbeeld geeft alle tabellen, geïndexeerde weergaven en statistieken terug in de huidige database waarvoor de leidende kolom meer dan 1.000 keer is aangepast sinds de laatste statistiekupdate.

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;