Oracle sql 优化:增加order by 慢 去掉之后就变快 解决办法
2017-02-13 10:22
671 查看
一 问题背景:
1.oracle的版本的为11g
2.数据是由生产库导入部分数据至开发库
3.表为范围分区表
4.order by 的字段为分区表的分区字段
5.数据记录大概有一千万;
5.使用的分析工具为toad10
二 问题描述
1.加上order by的执行计划:
![](https://img-blog.csdn.net/20170213100906579?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWFuZW5zaHVu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
2.去掉order by的执行计划:
![](https://img-blog.csdn.net/20170213101009622?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWFuZW5zaHVu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
三问题分析
步骤1:表order by的字段,是否有索引
ps:经检查,索引正常,开启索引监控,索引会被使用;
步骤2:是否收集过统计信息;
ps:由于是新导入的数据,可能未收集统计信息,重新收集统计,但是很奇怪,分析的统计信息的时间戳,不会更新(正常会更新);
分析前:
![](https://img-blog.csdn.net/20170213101859790?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWFuZW5zaHVu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
分析后:
![](https://img-blog.csdn.net/20170213101919697?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWFuZW5zaHVu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
步骤3:由于有时间范围作为分区的字段,通过增加范围条件,缩小查询的范围;
ps:可能最直接的原因是这个,最后让业务系统,在打开页面的时候,初始化一个时间段,问题解决,执行计划如下:
1.oracle的版本的为11g
2.数据是由生产库导入部分数据至开发库
3.表为范围分区表
4.order by 的字段为分区表的分区字段
5.数据记录大概有一千万;
5.使用的分析工具为toad10
二 问题描述
1.加上order by的执行计划:
2.去掉order by的执行计划:
三问题分析
步骤1:表order by的字段,是否有索引
ps:经检查,索引正常,开启索引监控,索引会被使用;
步骤2:是否收集过统计信息;
ps:由于是新导入的数据,可能未收集统计信息,重新收集统计,但是很奇怪,分析的统计信息的时间戳,不会更新(正常会更新);
分析前:
分析后:
步骤3:由于有时间范围作为分区的字段,通过增加范围条件,缩小查询的范围;
ps:可能最直接的原因是这个,最后让业务系统,在打开页面的时候,初始化一个时间段,问题解决,执行计划如下:
相关文章推荐
- oracle sqlplus输入scott/tiger报错:the account is locked的解决办法
- win7 64位+Oracle 11g 64位下使用PL/SQL Developer 的解决办法
- Windows200864位操作系统下的SQLPLUS.EXE 无法找到入口解决办法和Oracle环境变量的设置
- linux下oracle sqlplus退格方向键失效解决办法-rlwrap
- 转win8 64位+Oracle 11g 64位下使用PL/SQL Developer 的解决办法
- Oracle SQL Developer工具不能启动解决办法
- win7 64位+Oracle 11g 64位下使用PL/SQL Developer 的解决办法
- Windows200864位操作系统下的SQLPLUS.EXE 无法找到入口解决办法和Oracle环境变量的设置
- win8 64位+Oracle 11g 64位下使用PL/SQL Developer 的解决办法
- PowerDesigner15连接数据库报错解决办法Non SQL Error : Could not load class oracle.jdbc.OracleDriver
- oracle sqlplus输入scott/tiger报错:the account is locked的解决办法
- 执行oracle的sql脚本提示:“ORA-01031: 权限不足”解决办法!!!
- 保存BLOB类型报java.lang.ClassCastException: oracle.sql.BLOB 的解决办法
- 关于执行Oracle下Sql语句中遇到的特殊字符问题解决办法。
- win7 64位+Oracle 11g 64位下使用PL/SQL Developer 的解决办法
- sybase导出来的sql建表语句导入Oracle出错--解决办法
- div或li float之后父容器高度不能自动增加的解决办法
- PL/SQL访问64位ORACLE的解决办法
- 安装完Oracle 11g之后启动SQL Developer 时报cannot find a j2se sdk错误的解决办法
- Oracle 11g Flashback_transaction_query的undo_sql为空解决办法