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

				
时间: 2024-07-31 09:26:30

SQL Server 统计信息相关的命令的相关文章

SQL Server统计信息:问题和解决方式

在网上看到一篇介绍使用统计信息出现的问题已经解决方式,感觉写的很全面. 在自己看的过程中顺便做了翻译. 因为本人英文水平有限,可能中间有一些错误. 假设有哪里有问题欢迎大家批评指正.建议英文好的直接看原文:SQL Server Statistics: Problems and Solutions 正文: SQL Server统计信息协助查询优化器计算执行查询的最优方式. Holger描写叙述了常见的统计信息出错的事情,而且怎样改善 通常你不须要太操心运行SQL查询的方式.他们被传送到查询优化器,

SQL Server统计信息:问题和解决方案

在网上看到一篇介绍使用统计信息出现的问题已经解决方案,感觉写的非常全面.在自己看的过程中顺便做了翻译.由于本人英文水平有限,可能中间有一些错误.如果有哪里有问题欢迎大家批评指正.建议英文好的直接看原文:SQL Server Statistics: Problems and Solutions 正文: SQL Server统计信息协助查询优化器计算运行查询的最优方式. Holger描述了常见的统计信息出错的事情,并且如何改善 通常你不需要太担心执行SQL查询的方式.他们被传送到查询优化器,首先检查

翻译之:SQL Server统计信息简介

本文选自<Pro SQL Server Internals> 作者: Dmitri Korotkevitch 出版社: Apress 出版年: 2016-12-29 页数: 804 作者简介:Dmitri Korotkevitchis是微软SQL Server MVP和微软认证大师.作为应用程序和数据库开发人员.数据库管理员和数据库架构师,他具有多年使用SQL Server的经验.他专门从事OLTP系统在高负载下的设计.开发和性能调优.Dmitri经常在各种Microsoft和SQL PASS

全废话SQL Server统计信息(1)——统计信息简介

当心空无一物,它便无边无涯.树在.山在.大地在.岁月在.我在.你还要怎样更好的世界?--张晓风<我在> 为什么要写这个内容? 随着工作经历的积累,越来越感觉到,大量的关系型数据库的性能问题,其根源在于统计信息.这里说的是根源,其实很多时候大家觉得的那些什么索引失效等都只是表象.当然,不能一概而论,还有很多问题如配置问题.设计问题等等,甚至电源也会影响性能. 之所以得出这个结论,因为在常规的开发和部署过程中,一般企业级系统已经大量使用较为高级的磁盘阵列甚至企业级SSD,IO方面的问题已经很少,而

SQL Server 统计信息维护策略的选择

SQL Server 统计信息维护策略的选择 问题描述: 在对OLTP系统的一个上千万的表做归档后,循环分批删除源表数据时,业务应用收到超时告警,如下: V1.1.1.1: ****Process - QueryTransactionFor****: 23075129 Timeout expired.   The timeout period elapsed prior to completion of the operation or the server is not responding.

SQL Server 统计信息(Statistics)-概念,原理,应用,维护

前言:统计信息作为sql server优化器生成执行计划的重要参考,需要数据库开发人员,数据库管理员对其有一定的理解,从而合理高效的应用,管理. 第一部分 概念 统计信息(statistics):描述某个(些)栏位,索引的数据分布情况.优化器用其评估生成高效执行计划. 密度(density):一个比率值,显示在一个(组)列中有多少唯一值.(实际应用中值越小越好) Density = 1 / Number of distinct values for column(s) 直方图(histogram

全废话SQL Server统计信息(2)——统计信息基础

接上文:http://blog.csdn.net/dba_huangzj/article/details/52835958 我想在大地上画满窗子,让全部习惯黑暗的眼睛都习惯光明--顾城<我是一个任性的孩子> 这一节主要介绍一些理论层面的东西,主要针对SQL Server,为后面的做铺垫.假设从实操层面考虑能够跳过,可是我强烈建议还是要找时间看一下这节.本节的内容例如以下: SQL Server统计信息 列级统计信息 统计信息与运行计划 统计信息与内存分配 开销预估模型 SQL Server统计

SQL Server统计信息偏差影响表联结方式案例浅析

原文:SQL Server统计信息偏差影响表联结方式案例浅析   我们知道数据库中的统计信息的准确性是非常重要的.它会影响执行计划.一直想写一篇关于统计信息影响执行计划的相关博客,但是都卡在如何构造一个合适的例子上,所以一直拖着没有写.巧合,最近在生产环境中遇到这么一个案例,下面对案例中的相关信息做了脱敏处理,有些中间步骤也省略了,只关注核心部分SQL.如下所示,同事反馈一个SQL语句执行很慢.   UPDATE  b SET     b.[Status] = '已扫描,未签收' ,      

SQL Server 统计信息理解

前言 Sqlserver 查询是基于开销查询的,在首次生成执行计划时,是基于多阶段的分析优化才确定出较好的执行计划.而这些开销的基数估计,是根据统计信息来确定的.统计信息其实就是对表的各个字段的总体数据进行分段分布,数据库默认都会自动维护. 表和视图都有统计信息,统计信息对象是根据索引或表列的列表创建的.当某列第一次最为条件查询时,将创建单列的统计信息.当创建索引时,将创建同名的统计信息.索引中,统计信息只统计首列,因此索引除了按首列排序存储数据外,其统计信息也是按首列计算统计的,所以索引设置时