sql - Oracle:以注释开头的查询对性能有影响吗?

标签 sql oracle performance sql-execution-plan

我在查询的开头添加注释(在 Oracle 中)以提供有关查询本身的元数据信息。

我发现的关于这个话题的每一条信息都只是关于除了这个之外的提示:https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:93449400346099694 .

带有和不带有注释的执行计划是否会以相同的方式解释此查询?我的评论会对性能或缓存产生任何影响吗?

最佳答案

当您第一次运行查询时,Oracle 会创建执行计划并缓存该计划以供进一步使用。
当您添加任意注释时,实际上您运行的是不同的查询,因此 Oracle 会评估新的执行计划。一般来说,这个执行计划可能与第一个不同 - 尽管不太可能。
我记得在一次培训中,培训师向我们展示了“ secret ”Oracle 提示 /*+ RUN_FASTER */ - 事实上,查询的执行速度要快得多!诀窍是,对于原始查询,他存储了一个准备好的执行计划(请参阅 Using Plan Stability )以强制进行全表扫描。用“提示”/*+ RUN_FASTER */您有一个新查询,优化器评估了一个新的更好的计划。
事实上提示如 /*+ RUN_SLOWER *//*+ drink a cup of tea */做同样的事情,但不会让学生感到惊讶。 :-)

关于sql - Oracle:以注释开头的查询对性能有影响吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52293115/

相关文章:

SQL动态结构

SQL 使用字符串函数提高索引列性能

php - 在特定条件下对一列使用 MySQL IGNORE

python - 如何以 dd-mm-yyyy hh :mm:ss in an oracle table through python 格式更新当前日期、时间

performance - 我必须做什么才能使通过 HTTPS 提供的图像等内容缓存在客户端?

javascript - 我无法获得以下 HTML 文档输出! (html-css-javascript)

php - MySQL 左连接查询具有相同值的问题

java - 如何从 Oracle 中的 JDBC 批量插入中获取生成的键?

c++ - 为什么 std::vector 这么快(或者我的实现太慢了)

oracle - 是否可以捕获ORACLE中的语法错误