如果我发布有关针对Oracle数据库的查询的问题,我应该在问题中包含哪些内容,以便人们有机会回答我?我该如何获得这些信息?
仅仅提供效果不佳的查询可能还不够。
答案 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统计信息(一致获取,物理读取)。
此外,你认为谁应该能够更快地运行。你认为有一个更好的计划,还是只是交叉手指。