暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 19C 提示使用情况报告的目的

原创 Asher.HU 2021-02-04
838

19.3.3提示报告

一份已解释的计划包括一份报告,该报告显示在计划生成过程中使用了哪些提示。

本节包含以下主题: 

 

19.3.3.1提示使用情况报告的目的

Oracle Database 19c之前的版本中,可能很难确定优化器为何不使用提示。提示使用情况报告解决了此问题。

优化程序使用提示中编码的指令为语句选择执行计划,除非条件阻止优化程序使用提示。数据库不会针对其忽略的提示发出错误消息。提示报告显示使用和忽略了哪些提示,并通常说明了为什么忽略了提示。忽略提示的最常见原因如下:

  • 语法错误

    提示可以包含错字或无效的参数。如果多个提示出现在同一个提示块中,并且一个提示存在语法错误,则优化器将在提示之前对所有提示进行错误提示,并忽略之后出现的提示。例如,在提示规范中/*+ INDEX(t1) FULL(t2) MERG(v) USE_NL(t2) */MERG(v)存在语法错误。优化程序尊重INDEX(t1)FULL(t2),但忽略MERG(v)USE_NL(t2)提示使用情况报告列出MERG(v)有错误,但未列出,USE_NL(t2)因为未对其进行分析。

  • 未解决的提示

    由于语法错误以外的原因,未解决的提示无效。例如,一条语句指定INDEX(employees emp_idx),其中emp_idx不是table的有效索引名称employees

  • 冲突的提示

    即使正确指定了这些提示,数据库也会忽略冲突提示的组合。例如,一条语句指定FULL(employees) INDEX(employees),但是索引扫描和全表扫描是互斥的。在大多数情况下,优化器会忽略两个冲突的提示。

  • 受转换影响的提示

    转换会使某些提示无效。例如,一条语句指定PUSH_PRED(some_view) MERGE(some_view)some_view合并到其包含的查询块中时,PUSH_PRED由于some_view不可用,优化器无法应用提示

也可以看看:

Oracle数据库SQL语言参考,以了解注释和提示的语法规则

 


 


 

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论