首页 > 数据库 > Oracle中表的统计信息

Oracle中表的统计信息

时间:2023-02-10 12:03:57浏览次数:33  
标签:中表 信息 表列 索引 选择率 Oracle table 统计

1.查看Oracle中表的统计信息

oracle数据库在执行sql语句的时候,会根据统计信息计算怎样执行性能更优,当执行性能比自己想象的慢时,就有可能是统计信息不新导致,查看统计信息常用的方式有如下三种:

1 查看当前用户下的统计信息

select * from user_tab_statistics t where t.table_name=upper('dp_query_table_config');

2 查看dba用户下的统计信息

select * from dba_tab_statistics t where t.table_name=upper('dp_query_table_config');

3 如果上面两个都没有查到,通常会查到的,就可以用下面这个查询所有的统计信息

select * from all_tab_statistics t where t.table_name=upper('dp_query_table_config');

 Oracle中表的统计信息_数据块

搜集表统计信息

  • NUM_ROWS:表行数是CBO计算选择率基数的依据来源
  • BLOCKS:表使用块数
  • AVG_ROW_LEN:表记录平均长度,单位字节
  • EMPTY_BLOCKS:高水位线下空块数量,CBO计算选择率依据之一
  • CHAIN_CNT:行连接数量,表明表数据块物理分布情况
  • SAMPLE SIZE:搜集统计信息的采样比例,体现采样统计信息的精准度
  • LAST ANALYZED:记录上一次 ANALYZE搜集时间

搜集表列统计信息

  • NUM_DISTINCT:表列去重值数量(NDV),用于计算选择率
  • NUM_NULLS:表列空值,也用于计算选择率
  • LOW_VALUE/HIGH_VALUE:用于计算多谓词选择率与基数
  • DENSITY:表列数据分布密度,用于计算选择率
  • NUM_BUCKETS:直方图列中Buckets数量,用于CBO绑定变量窥视

搜集表列索引统计信息

  • 索引叶节点块数:统计索引块数量,用于计算索引成本
  • 索引二元高度Levels:索引树的高度,用于计算遍历索引的成本
  • 索引集簇因子(CF:Clustering Factor):判断是否选择使用索引的依据依据之一
  • 去重键数量(Distinct Keys),用于计算索引成本

2.Oracle重新收集表统计信息

method_opt:决定histograms信息是怎样被统计的.method_opt的取值如下(默认值为FOR ALLCOLUMNS SIZE AUTO):

  •     for all columns: 统计所有列的histograms.
  •     for all indexed columns: 统计所有indexed列的histograms.
  •     for all hidden columns: 统计你看不到列的histograms

begin
dbms_stats.gather_table_stats(
ownname => upper('USERNAME'), -- 要分析表的拥有者(需要替换)
tabname => upper('TABLENAME'), -- 要分析的表名(需要替换)
method_opt => 'for all indexed columns',
no_invalidate => false, -- 如果设置为 TRUE,则不会使相关游标无效。如果设置为 FALSE,该过程会立即使相关游标无效。
force => true -- force:即使表锁住了也收集统计信息.
);
end;
/

在重新获取统计信息之前可以先重建一下索引:

select 'alter index ' || '索引名称' || ' rebuild;' from user_indexes

标签:中表,信息,表列,索引,选择率,Oracle,table,统计
From: https://blog.51cto.com/u_15961021/6049042

相关文章

  • CentOS7-Oracle11g 安装记录
    1.CentOS7Oracle11g需要安装的依赖包binutils-2.23.52.0.1-12.el7.x86_64compat-libcap1-1.10-3.el7.x86_64compat-libstdc++-33-3.2.3-71.el7.i686compat-libst......
  • 54Oracle日期格式(NLS_DATE_FORMAT)介绍
    正常情况下Oracle默认显示的日期格式SYS@PROD1>selectsysdatefromdual;SYSDATE---------22-DEC-17这样显示不方便,如果想要显示的更加详细一些的话,可用通过设置N......
  • oracle中SQL处理获取几个通道的最后一辆或第一辆
    通道里的车情况:    SQL展示所有的车   SQL再取出每个通道里的第一辆或最后一辆row_number()over(partitionbyROUTE_NUMBER_IorderbyROUTE_IND......
  • pandas数据统计(方差/标准差/峰度/偏度/差值百分比/相关系数/排名(rank)等)
    数据统计#1.中位数median#median()参数解释median(self,axis:Axis|None|lib.NoDefault=lib.no_default,#轴方向skipna:bool_t=......
  • Python 安装使用cx_Oracle操作Oracle数据库
    cx_Oracle是一个能够访问Oracle数据库的Python扩展模块。它符合Python数据库API2.0规范,并增加了相当多的内容和几个排除项。Python连接使用Oracle数据需要使用c......
  • oracle数据库恢复
    系统环境:windowsserver2012数据库:oracle12在恢复dmp数据时,一般是通过使用plsqldeveloper进行导入表,但是此次进行数据恢复时界面一闪而过,最终采用命令行的方式恢复数据:i......
  • ddl锁表统计
    官方文档:https://dev.mysql.com/doc/refman/5.7/en/innodb-online-ddl-operations.html 虽然官方统计了大部分DDL操作时,是否允许DML,但并不是很全,或者有些支持DML,但仅仅......
  • Element 中表单输入整数及两位小数
    <template><divid="platformActivity"><el-form:model="formFieldsData"><!--充值金额保留两位小数--><el-form-itemlabel="充值......
  • ASP+VML制作统计图的源程序
    此程序只能用IE浏览器浏览,根据下面的源程序,我们只是略做修改结合数据库就能实际应用到一些系统中。示例:1、直方图    2、饼图   3、曲线图一、统计图--直方图<script......
  • oracle dblink 连接超时ora-12170问题记录
    应用联系我们说他们自己创建dblink连接我们数据库一会能连接上一会连接不上叫我们帮忙分析一下问题   这是他们创建语句他们那边连接报错   那么问题是怎么......