Delen via


sys.dm_db_stats_properties (Transact-SQL)

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

Geeft eigenschappen van statistieken terug voor het gespecificeerde databaseobject (tabel of geïndexeerde weergave) in de huidige SQL Server-database. Voor gepartitioneerde tabellen, zie de vergelijkbare sys.dm_db_incremental_stats_properties.

Syntaxis

sys.dm_db_stats_properties (object_id, stats_id)  

Arguments

object_id
Is de ID van het object in de huidige database waarvoor eigenschappen van een van zijn statistieken worden opgevraagd. object_id is int.

stats_id
Is de ID van statistieken voor de gespecificeerde object_id. De statistieken-id kan worden verkregen vanuit de dynamische beheerweergave sys.stats . stats_id is int.

Tabel geretourneerd

Kolomnaam Gegevenstype Description
object_id int Id van het object (tabel of geïndexeerde weergave) waarvoor de eigenschappen van het statistiekenobject moeten worden geretourneerd.
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 op deze pagina 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 worden gefilterd, is unfiltered_rows gelijk aan de waarde die in de kolom rijen terugkeert.
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 Persisted sample percentage gebruikt voor statistische updates die geen expliciet steekproefpercentage specificeren. Als de waarde nul is, wordt er geen persistent steekproefpercentage ingesteld voor deze statistiek.

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

Opmerkingen

sys.dm_db_stats_properties 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 opgegeven 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 van sys.dm_db_stats_properties mogelijk wanneer het wordt 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 data wordt gelezen om statistische data te genereren, wordt de statistiekblob niet aangemaakt, is de datum niet beschikbaar en is de kolom last_updated NUL. Dit geldt voor gefilterde statistieken waarbij het predicaat geen rijen teruggeeft, of voor nieuwe lege tabellen.

Permissions

Vereist dat de gebruiker selectierechten heeft op statistiekkolommen of dat de gebruiker de tabel bezit of lid is 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 de statistieken voor de Person.Person tabel in de AdventureWorks-database terug.

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

B. Alle statistische eigenschappen voor een tabel teruggeven

Het volgende voorbeeld geeft eigenschappen van alle bestaande statistieken voor de tabel TEST weer.

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. Statistiekeigenschappen teruggeven 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 1000 keer is aangepast sinds de laatste statistiekupdate.

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;  

Zie ook

DBCC-SHOW_STATISTICS (Transact-SQL)
sys.stats (Transact-SQL)
Objectgerelateerde dynamische beheerweergaven en -functies (Transact-SQL)
Dynamische beheerweergaven en -functies (Transact-SQL)
sys.dm_db_incremental_stats_properties (Transact-SQL)
sys.dm_db_stats_histogram (Transact-SQL)