MySQL的实行原理之查询重写规则(一)

打印 上一主题 下一主题

主题 1854|帖子 1854|积分 5562

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
对于一些实行起来十分耗费性能的语句,MySQL还是依据一些规则,竭尽努力的把这个很糟糕的语句转换成某种可以比力高效实行的形式,这个过程也可以被称作查询重写。
1.条件化简

我们编写的查询语句的搜索条件本质上是一个表达式,这些表达式大概比力繁杂,大概不能高效的实行,MySQL的查询优化器会为我们简化这些表达式。
1.1.移除不必要的括号

偶然候表达式里有很多无用的括号,比如这样:
  1. ((a = 5 AND b =c) OR ((a > c) AND (c < 5)))
复制代码
看着就很烦,优化器会把那些用不到的括号给干掉,就是这样:
  1. (a = 5 and b =c) OR (a > c AND c < 5)
复制代码
1.2.常量通报(constant_propagation)

偶然候某个表达式是某个列和某个常量做等值匹配,比如这样:
  1. a = 5
复制代码
当这个表达式和其他涉及列a的表达式利用AND连接起来时,可以将其他表达式中的a的值替换为5,比如这样:
  1. a = 5 AND b >a
复制代码
就可以被转换为:
  1. a = 5 AND b >5
复制代码
等值通报(equality_propagation)
偶然候多个列之间存在等值匹配的关系,比如这样:
  1. a = b and b = c and c = 5
复制代码
这个表达式可以被简化为:
[code][/code]
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

河曲智叟

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表