Sdílet prostřednictvím


STATS_DATE (Transact-SQL)

Platí pro:SQL ServerAzure SQL DatabaseSpravovaná instance Azure SQLAzure Synapse AnalyticsAnalytics Platform System (PDW)Koncový bod analýzy SQL v Microsoft FabricSklad v Microsoft FabricDatabáze SQL v Microsoft Fabric

Vrací datum poslední aktualizace statistik v tabulce nebo indexovaném pohledu.

Pro více informací o aktualizaci statistik viz Statistiky.

Transact-SQL konvence syntaxe

Syntaxe

STATS_DATE ( object_id , stats_id )  

Arguments

object_id
ID tabulky nebo indexovaného pohledu se statistikami.

stats_id
ID objektu statistiky.

Návratové typy

Vrací datum a čas po úspěchu. Vrátí NULL , pokud nebyl vytvořen statistický blob.

Poznámky

Systémové funkce lze použít v seznamu výběrů, v klauzuli WHERE a kdekoli, kde lze použít výraz.

Datum aktualizace statistiky je uloženo v objektu blob statistiky statistiky společně s histogramem a vektor hustoty, ne v metadatech. Pokud nejsou data čtena k generování statistických dat, statistický blob se nevytváří a datum není k dispozici. To platí pro filtrované statistiky, u kterých predikát nevrací žádné řádky, nebo pro nové prázdné tabulky.

Pokud statistiky odpovídají indexu, hodnota stats_id v katalogu sys.stats je stejná jako hodnota index_id v katalogu sys.indexes .

Povolení

Vyžaduje členství v db_owner pevné databázové roli nebo oprávnění k zobrazení metadat tabulky nebo indexovaného pohledu.

Examples

A. Vraťte data nejnovějších statistik pro tabulku

Následující příklad vrací datum poslední aktualizace pro každý statistický objekt v tabulce Person.Address .

USE AdventureWorks2022;  
GO  
SELECT name AS stats_name,   
    STATS_DATE(object_id, stats_id) AS statistics_update_date  
FROM sys.stats   
WHERE object_id = OBJECT_ID('Person.Address');  
GO  

Pokud statistiky odpovídají indexu, hodnota stats_id v katalogu sys.stats je stejná jako hodnota index_id v katalogu sys.indexes a následující dotaz vrátí stejné výsledky jako předchozí dotaz. Pokud statistiky neodpovídají indexu, jsou ve výsledcích sys.stats, ale ne ve výsledcích sys.indexes.

USE AdventureWorks2022;  
GO  
SELECT name AS index_name,   
    STATS_DATE(object_id, index_id) AS statistics_update_date  
FROM sys.indexes   
WHERE object_id = OBJECT_ID('Person.Address');  
GO  

Příklady: Azure Synapse Analytics a Analytický platformový systém (PDW)

B. Zjistěte, kdy byla pojmenovaná statistika naposledy aktualizována

Následující příklad vytváří statistiky ve sloupci Příjmení v tabulce DimCustomer. Poté spustí dotaz, který ukáže datum těchto statistik. Poté se statistiky aktualizují a dotaz se spustí znovu, aby ukázal datum aktualizace.

--First, create a statistics object  
USE AdventureWorksPDW2012;  
GO  
CREATE STATISTICS Customer_LastName_Stats  
ON AdventureWorksPDW2012.dbo.DimCustomer (LastName)  
WITH SAMPLE 50 PERCENT;  
GO  
  
--Return the date when Customer_LastName_Stats was last updated  
USE AdventureWorksPDW2012;  
GO  
SELECT stats_id, name AS stats_name,   
    STATS_DATE(object_id, stats_id) AS statistics_date  
FROM sys.stats s  
WHERE s.object_id = OBJECT_ID('dbo.DimCustomer')  
    AND s.name = 'Customer_LastName_Stats';  
GO  
  
--Update Customer_LastName_Stats so it will have a different timestamp in the next query  
GO  
UPDATE STATISTICS dbo.dimCustomer (Customer_LastName_Stats);  
  
--Return the date when Customer_LastName_Stats was last updated.  
SELECT stats_id, name AS stats_name,   
    STATS_DATE(object_id, stats_id) AS statistics_date  
FROM sys.stats s  
WHERE s.object_id = OBJECT_ID('dbo.DimCustomer')  
    AND s.name = 'Customer_LastName_Stats';  
GO    

C. Zobrazit datum poslední aktualizace pro všechny statistiky v tabulce

Tento příklad vrací datum, kdy byl každý statistický objekt v tabulce DimCustomer naposledy aktualizován.

--Return the dates all statistics on the table were last updated.  
SELECT stats_id, name AS stats_name,   
    STATS_DATE(object_id, stats_id) AS statistics_date  
FROM sys.stats s  
WHERE s.object_id = OBJECT_ID('dbo.DimCustomer');  
GO  

Pokud statistiky odpovídají indexu, hodnota stats_id v katalogu sys.stats je stejná jako hodnota index_id v katalogu sys.indexes a následující dotaz vrátí stejné výsledky jako předchozí dotaz. Pokud statistiky neodpovídají indexu, jsou ve výsledcích sys.stats, ale ne ve výsledcích sys.indexes.

USE AdventureWorksPDW2012;  
GO  
SELECT name AS index_name,   
    STATS_DATE(object_id, index_id) AS statistics_update_date  
FROM sys.indexes   
WHERE object_id = OBJECT_ID('dbo.DimCustomer');  
GO  

Viz také

Systémové funkce (Transact-SQL)
UPDATE STATISTICS (Transact-SQL)
sp_autostats (Transact-SQL)
Statistika
sys.dm_db_stats_properties (Transact-SQL)
sys.stats
Statistiky v Microsoft Fabric