Aracılığıyla paylaş


STATS_DATE (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiAzure Synapse AnalyticsAnaliz Platformu Sistemi (PDW)Microsoft Fabric'teki SQL analiz uç noktasıMicrosoft Fabric'teki ambarMicrosoft Fabric'teki SQL veritabanı

Tabloda veya indekslenmiş görünümde istatistikler için en son güncelleme tarihini döndürür.

İstatistiklerin güncellenmesi hakkında daha fazla bilgi için İstatistikler bölümünü inceleyin.

Transact-SQL söz dizimi kuralları

Sözdizimi

STATS_DATE ( object_id , stats_id )  

Arguments

object_id
Tablonun kimliği veya istatistiklerle birlikte indekslenmiş görünüm.

stats_id
İstatistik nesnesinin kimliği.

Dönüş Türleri

Başarı zamanı döner . Bir istatistik blobu oluşturulmadıysa NULL döner.

Açıklamalar

Sistem fonksiyonları, seçim listesinde, WHERE cümlesinde ve ifadenin kullanılabileceği her yerde kullanılabilir.

İstatistik güncelleştirme tarihi, meta verilerde değil histogram ve yoğunluk vektörüyle birlikte istatistik blob nesnesinde depolanır. İstatistik veri oluşturmak için veri okunmadığında, istatistik blobu oluşturulmaz ve tarih erişilebilir değildir. Bu, önlemin satır döndürmediği filtrelenmiş istatistikler veya yeni boş tablolar için geçerlidir.

Eğer istatistikler bir indeksle eşleşiyorsa, sys.stats katalog görünümündeki stats_id değeri, sys.indexes katalog görünümündeki index_id değeriyle aynıdır.

Permissions

db_owner sabit veritabanı rolünde üyelik veya tablo veya indekslenmiş görünüm için meta verileri görüntülemek için izin gerektirir.

Örnekler

A. Tablo için en güncel istatistiklerin tarihlerini döndür

Aşağıdaki örnek, tablodaki Person.Address her istatistik nesnesi için en son güncelleme tarihini döndürür.

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  

Eğer istatistikler bir indeksle eşleşiyorsa, sys.stats katalog görünümündeki stats_id değeri, sys.indexes katalog görünümündeki index_id değeriyle aynıdır ve sonraki sorgu, önceki sorguyla aynı sonuçları verir. Eğer istatistikler bir indeksle eşleşmiyorsa, sys.stats sonuçlarındadır, ancak sys.indexes sonuçlarında yoktur.

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  

Örnekler: Azure Synapse Analytics ve Analytics Platform Sistemi (PDW)

B. Bir isimli istatistikin en son ne zaman güncellendiğini öğrenin

Aşağıdaki örnek, DimCustomer tablosunun Soyadı sütununda istatistikler oluşturur. Sonra istatistiklerin tarihini göstermek için bir sorgu çalıştırır. Sonra istatistikleri gözden geçirir ve güncelleme tarihi göstermek için sorguyu tekrar çalıştırır.

--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. Tüm istatistikler için son güncelleme tarihini bir tabloda görüntüleyin

Bu örnek, DimCustomer tablosundaki her istatistik nesnesinin en son güncellendiği tarihi geri getirir.

--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  

Eğer istatistikler bir indeksle eşleşiyorsa, sys.stats katalog görünümündeki stats_id değeri, sys.indexes katalog görünümündeki index_id değeriyle aynıdır ve sonraki sorgu, önceki sorguyla aynı sonuçları verir. Eğer istatistikler bir indeksle eşleşmiyorsa, sys.stats sonuçlarındadır, ancak sys.indexes sonuçlarında yoktur.

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  

Ayrıca Bkz.

Sistem İşlevleri (Transact-SQL)
İSTATİSTİKLERİ GÜNCELLE (Transact-SQL)
sp_autostats (Transact-SQL)
İstatistikler
sys.dm_db_stats_properties (Transact-SQL)
sys.stats
Microsoft Fabric'te İstatistikler