2010-05-14 1 views

답변

7

SQL Server는이 정보를 저장하지 않습니다. REBUILD 작업이 인덱스에 대한 통계를 업데이트 할 때 특정 인덱스에 대해 통계가 마지막으로 업데이트 된 날짜를 기반으로 "대략적인"추정치를 얻을 수 있습니다.

다음은 AdventureWorks 데이터베이스를 사용하는 예입니다

USE AdventureWorks; 
GO 

SELECT name AS Stats, 
STATS_DATE(object_id, stats_id) AS LastStatsUpdate 
FROM sys.stats 
WHERE object_id = OBJECT_ID('Sales.SalesOrderDetail') 
and left(name,4)!='_WA_'; 

GO 

당신은 SQL Server 용 무료로 사용할 수있는 여러 가지 인덱스 튜닝 유지 보수 스크립트 중 하나를 사용하는 것이 좋습니다. 이들은 주어진 데이터베이스에서 수행 된 인덱스 조작의 세부 사항을 저장하여 인덱스가 마지막으로 재 빌드 된 시점에 대한 정보를 제공하는 수단을 제공합니다.

SQL Server 2000에 미셸 Ufford

+0

고맙습니다. – Manjot

+1

여러분, 반갑습니다. –

+1

이 인덱스 유지 관리 스크립트를 Ola Hallengren의 SQL Server Magazine 수상 스크립트와 비교해 보셨습니까? – user429921

2

에 의해 작성된 우수한 Index Maintenance Script를 살펴 보자은, 다음 스크립트는 SQL 2000에 존재하지 않는 sys.stats로 필요할 수 있습니다 :

DBCC SHOW_STATISTICS(TABLENAME, INDEX_NAME) 

많은 귀하의 스크립트 존 주셔서 감사합니다!

EDIT : 나는이 스크립트를 SQL 2005+ 이상으로 고려해 왔으며 (TableName, IndexName, LastStatsUpdate 형식의 데이터를 볼 필요가 있음) 다음 스크립트를 생각해 냈습니다.
나는 그것이 연마가 필요하다고 확신하므로 필요에 따라 조정할 수 있습니다.

SELECT OBJECT_NAME(object_id) [TableName], 
     name [IndexName], 
     STATS_DATE(object_id, stats_id) [LastStatsUpdate] 
FROM sys.stats 
WHERE name NOT LIKE '_WA%' 
AND STATS_DATE(object_id, stats_id) IS NOT NULL 
AND OBJECTPROPERTY(object_id, 'IsMSShipped') = 0 
ORDER BY TableName, IndexName 
관련 문제