MySQL查询优化器--逻辑查询优化技术(七)--等价谓词重写

14.1.3 等价谓词重写

MySQL镇南关一些常见的等价谓词重写规则。具体情况参见表14-2

 

14-2 MySQL支持等价谓词重写对照表

规则

谓词原型

转换后的谓词形式

支持

LIKE规则

name LIKE 'abc%'

`test`.`test_like`.`name` like 'abc%'

不支持

BETWEENAND规则

BETWEEN 10 AND 20

`test`.`test_like`.`sno` between 10 and 20

不支持

IN转换OR规则

age IN (8,12)

`test`.`test_like`.`age` in (8,12)

不支持

IN转换ANY规则

age IN (8,12,21)

`test`.`test_like`.`age` in (8,12,21)

支持

OR转换ANY规则

age=8 OR age=12 OR age=21

(`test`.`test_like`.`age` = 8) or (`test`.`test_like`.`age` = 12) or (`test`.`test_like`.`age` = 21))

不支持

ALL/ANY转换集函数规则

sno > ANY (10,2*5+3,sqrt(9))

语法不支持

不支持

NOT规则

NOT(age!=8) OR

NOT(age!=sno) OR

NOT(age=sno) OR

NOT(age<sno) OR

NOT(age>sno)

(`test`.`test_like`.`age` = 8)

(`test`.`test_like`.`sno` = `test`.`test_like`.`age`)

(`test`.`test_like`.`age` <> `test`.`test_like`.`sno`)

(`test`.`test_like`.`age` >= `test`.`test_like`.`sno`)

(`test`.`test_like`.`age` <= `test`.`test_like`.`sno`)

支持

OR重写并集规则

(name='abc' and age>15) OR age>18

((`test`.`test_like`.`name` = 'abc') and

(`test`.`test_like`.`age` > 15)) or

(`test`.`test_like`.`age` > 18)

不支持

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值