创新互联OceanBase教程: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教程:OceanBase 与联接顺序相关的 Hint
本文路径:http://www.csdahua.cn/qtweb/news1/436851.html

成都网站优化推广公司_创新互联,为您提供标签优化网站设计公司品牌网站建设网站改版ChatGPT云服务器

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网