codecamp

OceanBase 与联接顺序相关的 Hint

LEADING Hint

LEADING​ Hint 指示优化器在执行计划中使用指定的表集作为前缀,它可以用来指定表的联接顺序。这个 Hint 比 ​ORDERED​ Hint 更通用。

以下是 ​LEADING Hint​ 的语法:

/*+ LEADING ( [ @ queryblock ] tablespec [ tablespec ]...  ) */

LEADING​ Hint 为确保按照用户指定的顺序联接表,所以会进行严格的检查。如果发现 Hint 指定的 ​table_name​ 不存在,则 ​LEADING​ Hint 失效。如果发现 Hint 中存在重复表,则 ​LEADING​ Hint 失效。如果在优化器联接期间,无法找到对应的表,那么该表及后面的表指定的联接顺序失效,该表前面指定的顺序依然有效。如果由于联接图中的依赖关系,无法首先按照指定的顺序联接指定的表,则 ​LEADIN​G Hint 失效。如果指定两个或多个相互冲突的 ​LEADING​ Hint,则 LEADING Hint 失效。如果您指定了 ​ORDERED​ Hint,它将覆盖所有的 ​LEADING​ Hint。

示例如下:

SELECT /*+ LEADING(e j) */ *
    FROM employees e, departments d, job_history j
    WHERE e.department_id = d.department_id
      AND e.hire_date = j.start_date;

ORDERED Hint

ORDERED​ Hint 指示数据库按照表在 ​FROM​ 子句中出现的顺序联接表。建议使用 ​LEADING​ Hint,它比 ​ORDERED​ Hint 更通用。

以下是 ​ORDERED​ Hint 的语法:

/*+ ORDERED */

当您从需要联接的SQL语句中省略 ​ORDERED​ Hint 时,将由优化器将选择联接表的顺序。但是优化器不知道从每个表中要选择的行数,此时您可以使用 ​ORDERED​ Hint 来指定联接顺序。这样使您能够比优化器更好地选择内部表和外部表。如果在指定该 ​ORDERED​ Hint 后发生了改写,那么就按照改写后的语句中的 ​FROM​ 子句的顺序联接表。


OceanBase 与访问路径相关的 Hint
OceanBase 与联接操作相关的 Hint
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

OceanBase 控制台指南

OceanBase ODC 使用指南

OceanBase Web 版 ODC

OceanBase 客户端版 ODC

OceanBase Connector/J 开发者指南

OceanBase 什么是OceanBase Connector/J

OceanBase SQL 参考(MySQL 模式)

OceanBase SQL 参考(Oracle 模式)

OceanBase 基本元素

OceanBase 数据库对象

OceanBase 函数

OceanBase 单行函数

OceanBase 返回数字的字符串函数

OceanBase 通用比较函数

OceanBase 编码解码函数

OceanBase SQL 调优指南

OceanBase 相关协议

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }