Oracle sql 优化:增加order by 慢 去掉之后就变快 解决办法

2/13/2017来源:SQL技巧人气:2627

一 问题背景:

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:可能最直接的原因是这个,最后让业务系统,在打开页面的时候,初始化一个时间段,问题解决,执行计划如下: