博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Sql Server 2005 统计信息用途
阅读量:4212 次
发布时间:2019-05-26

本文共 1355 字,大约阅读时间需要 4 分钟。

1, 什么是统计信息 

    以下是官方的对统计信息的描述:

     按照默认设置,如果表中的某列没有索引,则SQL Server会自动为该列创建统计。然后,查询优化器评估该列中数据分布范围的统计信息,以选择一个更为有效的查询处理方案。分辨自动创建的统计很简单,在SQL Server 7.0SQL Server 2000中,自动创建的统计的前缀为_WA_Sys

 

  个人感想:  

    以前对_WA_Sys开头的统计信息一直不知道有什么用,在学习了oracle时的CBO和三个算法(嵌套循环,合并连接和hash连接)才发现这个_WA_Sys开头的统计信息和索引的统计信息对我们用户没用,对数据库是很重要的。

 

   2, 统计信息内容:

dbcc
 show_statistics(
'
[[zping.com]]]
'
,idx_operator)

   运行上面命令以后,出来下列信息:    

Name         Updated                        Rows Rows      Sampled    Steps     Density           Average 
key
 length    String 
Index
idx_operator 
07
 
24
 
2008
  
8
:15PM   
721370        
 
721370
    
200
     
0.002035875
 
63.99907
               YES

 

 这里的信息说明:

     name:统计信息的名称。 Updated :上一次更新统计信息的日期和时间   

     Rows :表中的行数。 Rows Sampled :统计信息的抽样行数。

     Steps:分发步骤数(在sql server最多200步)  Average key length :所有索引列的平均长度

   这些信息是对统计信息一个汇总

 

   还有下列信息:   

All
 density     Average Length   Columns
 
0.004219409
   
31.99907
        operator

 

    All density :索引列前缀集的选择性(频繁) Average Length :索引列前缀集的平均长度。 Columns:索引列前缀的名称

 

    还有包括数据统计的直方图信息:

   

   3,  统计信息的作用:

       1,  index建立后,优化器是否使用该index,优化器需要借助一些统计信息来做判断

    2,根据统计信息,预估采用嵌套循环连接,合并连接, 哈希连接等哪一个连接

    3,根据统计信息判断表的估计最佳的成本(最佳的执行顺序),

 

   4, 统计信息自动建立:

      1,建立索引后,就会出现一个同名的统计信息

      2,一个列没有统计信息,这时用他来关联表和查询数据,这时,系统会在评估最佳查询计划前,生成一个该列的"_WA_Sys"的统计信息。

   如下图:这里就包含(索引统计信息和列的统计信息)

 

  

 

     统计信息的更新和维护,由于数据的经常改变,统计信息是由sql server 2005自动维护的。可以手工更新统计信息:

  
update
 
statistics
 
[
[zping.com
]
]](_WA_Sys_creater_4C02DB92)  
with
 fullscan

 

     更新表的统计信息,采集表中该列的全部数据。一般建议采用全部数据采集。保证统计信息的正确性

 

   5,  统计信息的设置

    系统是如何来设置更新和创建统计信息的?

    

   

      原来在创建数据库时,系统自动设置了统计信息的属性。这两个属性一般不要手工改动。    

你可能感兴趣的文章
pfn_valid 源码分析
查看>>
dev/kmem 和dev/mem的区别
查看>>
checkbox
查看>>
Sending Simple Data to Other Apps
查看>>
Receiving Simple Data from Other Apps
查看>>
进程调度API之sleep_on_spinunlock
查看>>
进程调度API之preempt_count_add/preempt_count_sub
查看>>
kptr_restrict 来控制/proc/kallsyms 是否显示symbol的地址
查看>>
进程调度API之yield
查看>>
进程调度API之cond_resched
查看>>
utils/function_cmd_scp.sh
查看>>
utils/pkg_list.sh
查看>>
utils/pkg_list_update.py
查看>>
中断API之set_handle_irq
查看>>
中断API之__tasklet_hi_schedule
查看>>
libvirt的file injection
查看>>
中断API之__tasklet_hi_schedule_first
查看>>
中断API之__tasklet_schedule
查看>>
中断API之enable_irq
查看>>
中断API之disable_irq
查看>>