您的位置:首页 > 数据库

SQL Server 统计信息相关的命令

2015-06-02 16:16 477 查看
1、DBCC SHOW_STATISTICS 显示表或索引视图的当前查询优化统计信息

USE AdventureWorks2008R2;
GO
DBCC SHOW_STATISTICS ("Person.Address", AK_Address_rowguid);
DBCC SHOW_STATISTICS ("Person.Address", AK_Address_rowguid) WITH HISTOGRAM;
GO


  

2、STATS_DATE返回表或索引视图上统计信息的最新更新的日期

STATS_DATE ( object_id , stats_id )
object_id 具有统计信息的表或索引视图的 ID; stats_id统计信息对象的 ID。


USE AdventureWorks2008R2;
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


3、sp_autostats 显示或更改索引、统计信息对象、表或索引视图的自动统计信息更新选项 AUTO_UPDATE_STATISTICS。

USE AdventureWorks2012;
GO
--显示 Product 表的所有统计信息的状态
EXEC sp_autostats 'Production.Product';
--启用Product 表上的所有统计AUTO_UPDATE_STATISTICS 选项
EXEC sp_autostats 'Production.Product', 'ON';
--Product 表上的 AK_Product_Name 索引禁用 AUTO_UPDATE_STATISTICS 选项。
EXEC sp_autostats 'Production.Product', 'OFF', AK_Product_Name;

GO


4、更新统计信息

USE AdventureWorks2012;
GO
--更新库所有表的统计信息
EXEC sp_updatestats
go
--更新某一个表的统计信息
UPDATE STATISTICS Sales.SalesOrderDetail;
GO
--更新某一个索引的统计信息
UPDATE STATISTICS Sales.SalesOrderDetail AK_SalesOrderDetail_rowguid;


5、查看数据库统计信息设置

SELECT  CASE WHEN DATABASEPROPERTYEX('DBMonitor', 'IsAutoCreateStatistics') = 1
THEN 'Yes'
ELSE 'No'
END AS 'IsAutoCreateStatistics' ,
CASE WHEN DATABASEPROPERTYEX('DBMonitor', 'IsAutoUpdateStatistics') = 1
THEN 'Yes'
ELSE 'No'
END AS 'IsAutoUpdateStatistics' ,
CASE WHEN DATABASEPROPERTYEX('DBMonitor', 'Is_Auto_Update_stats_async_on') = 1
THEN 'Yes'
ELSE 'No'
END AS 'IsAutoUpdateStatsaAyncOn'

GO
SELECT  name ,
is_auto_create_stats_on ,
is_auto_update_stats_async_on ,
is_auto_close_on
FROM    sys.databases ;


6、查看统计信息比较好的一些帖子
http://www.cnblogs.com/CareySon/archive/2012/05/14/HowStatisticImpactQuery.html http://www.cnblogs.com/kerrycode/p/3337817.html

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: