Oracle orader group 非常非常慢! Oracle 直接按照时段查询只需要0.06s,假如order by 时间后需要60S数据库已经运行一年了,之前都是正常的网上查询说有可能是TEMP空间满了,压缩后依然没有效果,数据库日志文件没有报错,求大神指导 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 group by,order by都一样,需要返回所有数据才能分组或者排序(有特例,比如order by之后的分页可能不需要),你按照时间段查询,是因为客户端自作主张地给你没有返回所有数据,所以快。 这个库和慢的库,数据量是否一样?满足时间条件的数据量是否一致?如果都是,那么就工具来辅助调查:在你的sql里加入gather_plan_statistics提示,比如:select /*+gather_plan_statistics*/ .... 执行你的SQL之后,再跑如下命令把结果贴上来:select * from table(dbms_xplan.display_cursor(null,null, 'last allstats'));注意在执行你的SQL之后,到执行上述命令之间,不能执行其他任何SQL,另外,不要使用plsql developer,因为这个工具会隐含执行一些命令,影响输出结果。 此外,调优的时候除非你对oracle的优化器和体系架构较多的了解,最好不要拿不同的库做比较,这会将问题复杂化,影响你解决问题的思路。 新手,求大神指导SQL> select * from table(dbms_xplan.display_cursor(null,null, 'last allstats'));PLAN_TABLE_OUTPUT--------------------------------------------------------------------------------SQL_ID 2s422sp3b1fjg, child number 0-------------------------------------select /*+ gather_plan_statistics */* from thunder2019 wheredatetime>to_Date('2019-10-16 15:00:00','yyyy-mm-dd hh24:mi:ss') orderby datetime descPlan hash value: 2282267311--------------------------------------------------------------------------------------------------------------------------------PLAN_TABLE_OUTPUT--------------------------------------------------------------------------------| Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers | Reads | OMem | 1Mem | Used-Mem |--------------------------------------------------------------------------------------------------------------------------------| 0 | SELECT STATEMENT | | 1 | | 0 |00:00:30.90 | 486K| 486K| | | || 1 | SORT ORDER BY | | 1 | 5397 | 0 |00:00:30.90 | 486K| 486K| 1024 | 1024 | |PLAN_TABLE_OUTPUT--------------------------------------------------------------------------------|* 2 | TABLE ACCESS FULL| THUNDER2019 | 1 | 5397 | 0 |00:00:30.90 | 486K| 486K| | | |--------------------------------------------------------------------------------------------------------------------------------Predicate Information (identified by operation id):---------------------------------------------------PLAN_TABLE_OUTPUT-------------------------------------------------------------------------------- 2 - filter("DATETIME">TO_DATE(' 2019-10-16 15:00:00', 'syyyy-mm-dd hh24:mi:ss'))Note----- - dynamic sampling used for this statement (level=2)已选择25行。 从这个执行计划来看,这只是纯粹的datetime字段没有索引,在这个字段上创建个索引吧 1、建议问优化问题时,提供SQL语句和相应的执行计划,这样,大家可以一目了然。 关于dbms_lob.convertToBlob 怎么用青蛙 导出insert的语句? 求一个更新plsql语句 oracle imp 到其他用户的其他表中如何解决 oracle-00600 再不解决,就会要命的问题 orcle数据链路失效后如何处理 count()在trigger用不起来,请帮忙?????????????????急!!!!! Oracle数据库客户端一般数据库工具有些什么啊? 如何将一个select的结果作为另外一个select使用的表格?? 求一sql语句 怎样做职场规划 交流oracle
这个库和慢的库,数据量是否一样?满足时间条件的数据量是否一致?如果都是,那么就工具来辅助调查:
在你的sql里加入gather_plan_statistics提示,比如:select /*+gather_plan_statistics*/ ....
执行你的SQL之后,再跑如下命令把结果贴上来:
select * from table(dbms_xplan.display_cursor(null,null, 'last allstats'));
注意在执行你的SQL之后,到执行上述命令之间,不能执行其他任何SQL,另外,不要使用plsql developer,因为这个工具会隐含执行一些命令,影响输出结果。
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------SQL_ID 2s422sp3b1fjg, child number 0
-------------------------------------
select /*+ gather_plan_statistics */* from thunder2019 where
datetime>to_Date('2019-10-16 15:00:00','yyyy-mm-dd hh24:mi:ss') order
by datetime descPlan hash value: 2282267311--------------------------------------------------------------------------------------------------------------------------------
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------| Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time
| Buffers | Reads | OMem | 1Mem | Used-Mem |--------------------------------------------------------------------------------------------------------------------------------| 0 | SELECT STATEMENT | | 1 | | 0 |00:00:30.90 | 486K| 486K| | | || 1 | SORT ORDER BY | | 1 | 5397 | 0 |00:00:30.90 | 486K| 486K| 1024 | 1024 | |PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
|* 2 | TABLE ACCESS FULL| THUNDER2019 | 1 | 5397 | 0 |00:00:30.90 | 486K| 486K| | | |--------------------------------------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
PLAN_TABLE_OUTPUT
-------------------------------------------------------------------------------- 2 - filter("DATETIME">TO_DATE(' 2019-10-16 15:00:00', 'syyyy-mm-dd hh24:mi:ss'))
Note
-----
- dynamic sampling used for this statement (level=2)
已选择25行。