Chinfa DRA480-24A
修改统计信息值恢复Oracle执行计划
经常会遇到由于日期字段统计信息的边界值不准确,导致Oracle SQL执行计划发生改变,通常是最大值没有及时更新或者最大值过大。
下面是遇到的一个案例,SQL的执行计划突然改变,原先使用的是index range scan,突然变成了index full scan。 导致SQL语句非常缓慢。
点击(此处)折叠或打开
- select count(*) from prd_t1 where input_date>trunc(sysdate-1)
- and input_date
原来的执行计划:
点击(此处)折叠或打开
- SQL> select count(*) from prd_t1 where input_date > trunc(sysdate);
- COUNT(*)
- ----------
- 193311
- Execution Plan
- ----------------------------------------------------------
- 0 SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=1 Bytes=8)
- 1 0 SORT (AGGREGATE)
- 2 1 INDEX (RANGE SCAN) OF 'IDX_PRD_T1' (NON-UNIQU
- E) (Cost=4 Card=2 Bytes=16)
变差的执行计划:
点击(此处)折叠或打开
- SQL> select count(*) from prd_t1 where input_date > trunc(sysdate);
- COUNT(*)
- ----------
- 193311
- Execution Plan
- ----------------------------------------------------------
- 0 SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=1 Bytes=8)
- 1 0 SORT (AGGREGATE)
- 2 1 INDEX (FAST FULL SCAN) OF 'IDX_PRD_T1' (NON-UNIQU
- E) (Cost=6458 Card=6130163 Bytes=49041304)
检查和字段的统计信息有关系,字段input_date的最小值和最大值分别是18-JAN-2016和15-MAY-2026。所以选择了fast full scan。
修改完最大值和最小值,执行计划恢复成使用rang scan
点击(此处)折叠或打开
- SQL> select table_name,TO_CHAR(TO_DATE(TRUNC(ENDPOINT_VALUE),'J'),'DD-MON-YYYY')
- 2 from dba_tab_histograms where table_name='PRD_T1' and column_name='INPUT_DATE';
- TABLE_NAME TO_CHAR(TO_DATE(TRUNC(ENDPOINT
- ------------------------------ ------------------------------
- PRD_T1 19-APR-2016
- PRD_T1 18-APR-2017
具体方法如下:
点击(此处)折叠或打开
- DECLARE
- srec DBMS_STATS.STATREC;
- v_distcnt NUMBER;
- v_density NUMBER;
- v_nullcnt NUMBER;
- v_avgclen NUMBER;
- numvals DBMS_STATS.NUMARRAY;
- charvals DBMS_STATS.CHARARRAY;
- datevals DBMS_STATS.DATEARRAY;
- BEGIN
- -- Date Type
- DBMS_STATS.get_column_stats (ownname => 'DBO',
- tabname => 'PRD_T1',
- colname => 'INPUT_DATE',
- distcnt => v_distcnt,
- density => v_density,
- nullcnt => v_nullcnt,
- srec => srec,
- avgclen => v_avgclen
- );
- datevals := DBMS_STATS.datearray (sysdate-365, sysdate);
- DBMS_STATS.prepare_column_values (srec, datevals);
- DBMS_STATS.set_column_stats (ownname => 'DBO',
- tabname => 'PRD_T1',
- colname => 'INPUT_DATE',
- distcnt => v_distcnt,
- density => v_density,
- nullcnt => v_nullcnt,
- srec => srec,
- avgclen => v_avgclen
- );
- COMMIT;
- END;
- /
Chinfa DRA480-24A相关推荐
- 1.24A Simple Math Problem
原网址:https://acs.jxnu.edu.cn/problem/NOIOPJCH02077215 描述: Huanhuan challenges you to a simple math pr ...
- 节能无线信标Ver0:功率测试
文章目录 ▌01 节能无线信标 1.测试背景 2.上次调试故障 ▌02 功率发送电路调试 1.故障检测 2.测试输出 (1)没有加输出线圈 (2)增加发送线圈 3.频率与空载电流 (1)ARR与空载电 ...
- 【连载】物联网全栈教程-从云端到设备(十三)---安装单片机编译环境
物联网全栈教程-从云端到设备(十三) 一 很多朋友一听说要搞硬件总觉得还要重新学习很多电路基础知识,零妖告诉你这是个错误的想法.如果在十年前你这么想那么我是非常支持你的,但是在物联网时代你需要改变一下 ...
- Flash使用域内存api的MD5,速度超快!
为什么80%的码农都做不了架构师?>>> Adobe官网提供的as3corelib-.93包中的MD5,对稍大的数据执行速度都很慢,原因是代码对Flash执行机制没有针对性优化 ...
- Ext2、Ext3和Ext4之间的区别
ext2与ext3 Linux ext2/ext3文件系统使用索引节点来记录文件信息,作用像windows的文件分配表.索引节点是一个结构,它包含了一个文件的长度.创建及修改时间.权限.所属关系.磁盘 ...
- 安振平老师的4911号不等式问题的证明
题目:设$a,b,c\geq 0$,且$a+b+c=1$,求证:$\frac{1}{a^2-4a+9}+\frac{1}{b^2-4b+9}+\frac{1}{c^2-4c+9}+\frac{1}{1 ...
- y电容如何选型_常用电子元器件分类选型以及单端反激正激变压器设计 (MOS管、电感部分)...
▲ 点击上方 21Dianyuan 关注我们 本文是 21Dianyuan 社区原创 技术文章,作者 xueyiranpiao,感谢作者的辛苦付出. 本文将分以下几个部分进行分享: ▪ 保险丝 ▪ 压 ...
- ext2和ext3文件系统知识
Linux ext2/ext3文件系统使用索引节点来记录文件信息,作用像windows的文件分配表.索引节点是一个结构,它包含了一个文件的长度.创建及修改时间.权限.所属关系.磁盘中的位置等信息.一个 ...
- apache arrow mysql_新手搭建PHP环境必备知识:windows下PHP5+APACHE+MYSQ完整配置(个人总结)...
经过一段时间狂热的PHP编程,对WINDOWS平台下PHP的配置可算是深有感触,一开始我用的是一键安装的傻瓜包,但是考虑傻瓜包的安装版本已经落后,在真正手动配置PHP环境时遇到许多问题,在查阅了许多资 ...
最新文章
- nginx系列:nginx反向缓存代理详解
- linux设备驱动之pci设备的驱动架构
- Linux中kill,pkill,killall和xkill命令汇总讲解
- html 无效源,IE bug无效源HTML5音频 - 解决方法
- js(Dom+Bom)第五天(1)
- 使用Spring Data R2DBC进行异步RDBMS访问
- idea报“Usage of API documented as @since 1.7”这一问题的解决方法
- 有助于改变你命运的5个处世潜规则
- 从华为“流程与IT管理部”看IT部门定位
- [转载] lstm时间序列预测_pytorch入门使用PyTorch进行LSTM时间序列预测
- 微型计算机系统软件包括哪些,计算机的软件系统包括哪些内容
- Python - PyMuPDF (fitz) 处理 PDF
- TCP RTT测量妙计
- 养老保险和住房公积金如何转移
- Redis安装配置说明
- 数字中国城市巡礼之开封:千年古都的智慧新生
- 斗破苍穹里的那些女人
- 2010考研数学二第(11)题——高阶导数
- python中set如何添加元素_python中如何在set中添加元素?语句是什么
- PTA基础编程题目集