如果我发布有关Oracle SQL查询性能的问题,我应该在我的问题中包含哪些内容?

时间:2008-11-16 06:57:21

标签: sql performance oracle database-design

如果我发布有关针对Oracle数据库的查询的问题,我应该在问题中包含哪些内容,以便人们有机会回答我?我该如何获得这些信息?

仅仅提供效果不佳的查询可能还不够。

3 个答案:

答案 0 :(得分:4)

  • 所涉及的表的架构定义。
  • 在这些表上定义的索引。
  • 您正在执行的查询。
  • 生成的查询执行计划

答案 1 :(得分:3)

查询计划始终有用

答案 2 :(得分:3)

理想情况下,使用来自v $ sql的sql_id和child_cursor_id,使用DBMS_XPLAN.DISPLAY_CURSOR获取完整的查询计划。如果失败(即在旧版本上),请尝试v $ sql_plan并包含过滤器和访问谓词。如果实际显示已使用的计划,EXPLAIN PLAN就可以了。

数据库版本和版本(Express / Standard / Enterprise)。也许是操作系统。 SELECT * FROM V $ VERSION

如果您有任何非标准数据库参数,则了解(尤其是与优化程序相关的任何内容)非常有用。 select * from v $ parameter其中rownum< 5并且isdefault!='TRUE'; *如果你做了     alter session set events'10053永远跟踪名称上下文,级别1' 并解析一个查询,会有一个日志文件,其中包含优化查询时使用的所有参数*

真实世界的表格大小和列分布(例如,它是一个百万行表,其中30%的行是“红色”等)。 USER_TABLES,USER_TAB_COLUMNS。

的相关统计数据

它的实际外观,以及v $ sql中可用的任何SQL统计信息(一致获取,物理读取)。

此外,你认为谁应该能够更快地运行。你认为有一个更好的计划,还是只是交叉手指。