举报投诉联系我们 手机版 热门标签 编程学
您的位置:编程学 > oceanbase sql语句 OceanBase 查询改写概述

oceanbase sql语句 OceanBase 查询改写概述

2023-04-30 21:18

oceanbase sql语句 OceanBase 查询改写概述

oceanbase sql语句 OceanBase 查询改写概述

oceanbase sql语句

数据库中的查询改写(Query Rewrite)是指将一个 SQL 改写成另外一个更加容易优化的 SQL。

OceanBase 数据库所支持的查询改写规则分为基于规则的查询改写和基于代价的查询改写。

基于规则的查询改写总是会把 SQL 往“好”的方向进行改写,从而增加该 SQL 的优化空间。一个典型的基于规则的改写是把子查询改写成联接。如果不改写,子查询的执行方式只能是 Nested Loop Join,改写之后,优化器就也可以考虑 Hash Join 和 Merge Join 的执行方式。

基于代价的查询改写并不能总是把 SQL 往“好”的方向进行改写,需要使用代价模型来判断。一个典型的基于代价的改写就是 Or-Expansion。

在数据库中,一个改写规则通常需要满足特定的条件才能够实现,而且很多规则的改写可以互相作用(一个规则的改写会触发另外一个规则的改写)。OceanBase 数据库把所有基于规则的查询改写分成若干个规则集合。对于每个规则集合,OceanBase 数据库采用迭代的方式进行改写,一直到 SQL 不能被改写为止或者迭代次数达到预先设定的阈值。类似地,对于基于代价的改写规则也是采用这种方式处理。

这里需要注意的是,基于代价的改写之后可能又会重新触发基于规则的改写,所以整体上的基于代价的改写和基于规则的改写也会采用这种迭代的方式进行改写。


阅读全文
以上是编程学为你收集整理的oceanbase sql语句 OceanBase 查询改写概述全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 编程学 bianchengxue.com 版权所有 联系我们
桂ICP备19012293号-7 返回底部