love wife love life —Roger的Oracle/MySQL数据恢复博客

Phone:18180207355 提供专业Oracle/MySQL数据恢复、性能优化、迁移升级、紧急救援等服务

Oceanbase系列之–查询转换(很牛B)

本站文章除注明转载外,均为本站原创: 转载自love wife love life —Roger的Oracle/MySQL数据恢复博客

本文链接地址: Oceanbase系列之–查询转换(很牛B)

听闻Oceanbase对于Oracle的兼容做的不错,尤其是查询转换方面是强项。这里我简单测试一下,供大家参考,不足之处,还请指正,谢谢。

从上面的测试来看,OB 这里对于not exists和exists处理跟Oracle几乎一样了。(Oracle 10g版本). 查看参数发现ob也有类似的参数:

继续看看exists 的处理是否一样呢 ?

这里走了semi join,也跟Oracle 的处理方式一样了。不过Oracle这种情况下通常是走hash semi join;而OB这里走了merge semi join。继续测试一下not in :

可以看到对于非null 列,这里无论是not exists/exists 还是not in;ob都走了hash anti join/semi join;这一点跟Oracle 11g一致。

那么,如果where 列 允许为空呢? 能否还走hash anti join呢? 我们修改一下表结构,再测一把。

从上面的测试来看OB针对not exists、exists、not in、in 的处理几乎跟Oracle 11gR2 一样了。这是一个巨大的进步。由此不难看出, Ob在针对Oracle方面的兼容还是有一定功底的。

接下来再来测一下View 谓词推入:

不难看出上述行为跟Oracle一致。最后再简单测一下子查询展开的情况看看,比如包含rownum,union all之类行不行,实际上这方面Oracle也无法进行展开。

从上述的测试来看,在查询转换方面OB做的还是非常不错的,几乎跟Oracle 一致,可见兼容性还不错。非常给力!这方面应该算是我目前测试过的国产数据库方面最强的了

注意:以上测试脚本我完全是照搬自己很早之前的测试例子,未做任何改动。

Leave a Reply

You must be logged in to post a comment.