SQL Server 统计信息相关的命令
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
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。