SQL优化:统计信息的创建

 

统计信息的作用:查询优化器使用统计信息来估计查询结果中的基数或行数,查询优化器就可以创建高质量的查询计划。

数据库引擎可以使用统计信息中的任何数据计算基数估计。


例如,查询优化器可以使用基数估计,在查询计划中选择索引查找运算符而不是索引扫描运算符,避免消耗大量资源的索引扫描,提高查询性能。

调用CREATE STATISTICS语句,可以对不是统计信息对象中第一列的列,创建单列统计信息。
创建单列统计信息会增加直方图的数目,这可能会改进基数估计、查询计划和查询性能。
统计信息对象的第一列具有直方图;其他列不具有直方图。

 

1、创建有主键的表,会自动建立聚集索引,自动生成索引所对应的统计信息

create table txt(id numeric(10,0) primary key,
                 v varchar(20),
                 vv int )

2、建立非聚集索引后自动生成索引所对应的统计信息

create index txt_v on txt(v)
 
 
insert into txt
select object_id,
       type_desc,
       schema_id
from sys.objects
where LEN(type_desc) < 20
 

3、手动创建统计信息的方式:

3.1创建统计信息,通过扫描表或索引视图中的所有行来计算统计信息

create statistics txtStats
on dbo.txt(v,vv)
with fullscan

3.2采用为10%的行

create statistics txtStatsPercent
on dbo.txt(v,vv)
with sample 10 percent  

3.3采样为100行
 

create statistics txtStatsRow
on dbo.txt(v,vv)
where id < 1000         --使用筛选谓词创建的统计信息
with sample 100 rows, 
     norecompute    --覆盖数据库选项选项AUTO_STATISTICS_UPDATE
                    --查询优化器将完成statistics_name的任何正在进行中的统计信息更新
                    --并禁用将来的更新

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值