【SQL Server】统计信息实战+实用SQL语句

      我知道大家是冲着实战来的,要的就是这个效果大笑。这里就不扯统计信息的概念原理什么的了(我也记不住啊),但是我想大家对统计信息的重要性应该都会有所体会吧,只要你是数据库从业者,应该或多或少会遇到统计信息相关的问题。作为查询优化器创建查询计划的重要依据,统计信息的好坏直接影响到SQL语句的性能,几个小时run不出来的语句,也许更新统计信息后几分钟就完成了,是的就是这么的神奇。

      那么除了手动创建外,什么情况下SQL Server会自动创建统计信息呢(总得有个触发条件吧)。

 1)在创建索引时,SQL Server会同时在索引列上创建统计信息;
 2)SQL Server需要使用某些列上的统计信息,但发现不存在,此时会自动创建统计信息;

      再者,什么时候会触发自动更新统计信息呢。

1)空表插入数据后;
2)小于500行的表格,当统计信息的第一个字段数据累计变化大于500以后;
3)大于500行的表格,当统计信息的第一个字段数据累计变化大于500或者超过20%表格总的记录数;
     除了以上的触发条件,SQL Server自动创建/更新统计信息的开关必须是打开的,可通过如下语句进行查询。默认的情况下一定要保持开关都是打开的,除非有特殊需求需要关闭。

SELECT name AS "Name", 
       [Auto Create Stats] = 
       CASE WHEN is_auto_create_stats_on = 1
         THEN 'ON' ELSE 'OFF' END,
       [Auto Update Stats] = 
       CASE WHEN is_auto_update_stats_on = 1
         THEN 'ON' ELSE 'OFF' END,
       [Asynchronous Update] = 
       CASE WHEN is_auto_update_stats_async_on = 1
         THEN 'ON' ELSE 'OFF' END
FROM sys.databases
     有了统计信息之后,如何查询具体的表包含哪些统计信息呢,下面的语句将展示如何查询和分析具体表的统
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值