lightdb22.2-增强对oracle hint的兼容(二)

LightDB22.2版本增强了对Oracle hint特性的兼容性,包括支持使用逗号分隔参数,大小写不敏感,支持语句级parallel hint,以及对单表子查询中单表的accesspath和join hint。这些改进使得LightDB更便于迁移和使用Oracle的SQL优化策略。
摘要由CSDN通过智能技术生成

LightDB22.2-增强对oracle hint 特性的兼容(二)

1. 逗号分隔

oracle 可以使用逗号或空格来分隔参数,原先 lightdb使用空格来分隔参数,现在也支持逗号来分隔参数,示例如下:use_hash(a,b,c)

2. 大小写不敏感

oracle 对于 hint 中指定的表名是不区分大小写的,即use_hash(a)use_hash(A)相同。

lightdb 之前版本 hint 中使用的表名是区分大小写的,这个版本开始改为不区分大小写,对于指定的表名都转为小写(与sql相同,在sql中表名会转为小写),通过加双引号不表明不进行转换。即 use_hash(a)use_hash(A) 相同,use_hash("a")use_hash(A)相同, use_hash("A") use_hash(A) 不同。

3. parallel hint 支持语句级

oracle 支持对语句使用parallel hint,如下:

select/*+parallel(4)*/ * from t1,t2 where t1.id=t2.id;

parallel 会对 t1 和 t2 表都生效。

现在 lightdb 也支持上述用法,用来对一个查询块中的所有表指定并发。

4. 支持scan, join hint 作用于单表子查询中的单表

Access path and join hints on referenced views are ignored unless the view contains a single table or references an Additional Hints view with a single table. For such single-table views, an access path hint or a join hint on the view applies to the table inside the view.

在 oracle 中access path 和join hint 会作用于单表子查询中的单表,如下所示:

select/*+full(y) use_hash(t1 y)*/ * from t1,(select * from (select * from t2 where id>10)x where x.id<100) where t1.id=y.id;

正常来说,full 不会对view起效,而y merge 后 会消失,use_hash(t1 y) 也不应该起效,但oracle 对于这种情况会进行特殊处理,full(y) 会对 t2 表起效,相当于 full(y) 转换为了 full(t2@xxx)use_hash(t1 y)相当于转换为了 use_hash(t1 t2@xxx)

现在 lightdb 也支持了这个特性。可以方便的进行迁移。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

紫无之紫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值