首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle中的Log和where子句执行时间

Oracle中的Log和where子句执行时间
EN

Stack Overflow用户
提问于 2017-03-07 15:18:12
回答 1查看 212关注 0票数 2

我想在Oracle数据库中的查询方面寻求一些帮助。

我有大量的选择,多个表连接在一起(超过10个)和多个where子句应用(10-20)。有些表有10列,有些表有300+。大多数表都有10+百万行,其中一些甚至有60+百万行。

执行时间通常在25到45分钟之间,有时下降到30秒。监视服务器负载显示,负载几乎相同。

我们希望优化选择,将通常的执行时间减少到10-15分钟或更少。

我的问题是:是否有任何工具或技术可以为我提供查询运行时间这么长的信息(比如某种东西,它可以告诉我在最后一次执行查询时,第一次连接占用了36秒,第二次连接占用了40秒,第1次执行了10秒等等)?

(请注意,我要求的不是优化建议,而是任何工具或技术,这些工具或技术可以为我提供关于执行查询的哪一部分/操作花了这么长时间的信息)

谢谢,我希望我说得很清楚!)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-07 15:55:17

一种选择是执行以下操作:

  1. /*+ gather_plan_statistics */添加到查询中
  2. 执行查询
  3. 查询后,select * from table(dbms_xplan.display_cursor(null, null, 'ALLSTATS LAST'));

这为您提供了一个包含实际行、实际时间、内存使用情况等列的计划。

如果不想重新运行查询,可以使用如下SQL Monitor报告生成上次执行的实际行和次数:

代码语言:javascript
复制
select dbms_sqltune.report_sql_monitor(sql_id => ' add the sql_id here') from dual;

使用这些工具可以让您专注于相关操作。简单的旧解释计划对于复杂的查询来说是不够好的。AWR不关注单个查询。当有更快的替代方案时,追踪是对时间的巨大浪费。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42651943

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档