MySQL查询优化器--逻辑查询优化技术(三)--嵌套连接消除
来源:互联网 发布:js遍历json二维数组 编辑:程序博客网 时间:2024/05/22 09:50
1.1.1 嵌套连接消除
MySQL支持嵌套连接的消除。
一 存在嵌套连接
SQL语句的语义,是B和C先连接,然后再和A连接;但是,查询执行计划是A和B先连接,然后再连接C。所以,用括号表示的嵌套被消除。
mysql> EXPLAIN EXTENDED SELECT * FROM AJOIN (B JOIN C ON B.b1=C.c1) ON A.a1=B.b1 WHERE A.a1 > 1;
+----+-------------+-------+------+----------------------------------------------------+
| id | select_type | table | type |Extra |
+----+-------------+-------+------+----------------------------------------------------+
| 1| SIMPLE | C | ALL | Using where |
| 1| SIMPLE | B | ALL | Using where; Using join buffer (Block Nested Loop) |
| 1| SIMPLE | A | ALL | Using where; Using join buffer (Block Nested Loop) |
+----+-------------+-------+------+----------------------------------------------------+
被查询优化器处理后的语句为:
/* select#1 */ select `test`.`a`.`a1` AS`a1`,
`test`.`a`.`a2` AS `a2`,`
test`.`b`.`b1` AS `b1`,
`test`.`b`.`b2` AS `b2`,
`test`.`c`.`c1` AS `c1`,
`test`.`c`.`c2` AS `c2`
from `test`.`a` join`test`.`b` join `test`.`c`
where ((`test`.`b`.`b1` = `test`.`c`.`c1`)and
(`test`.`a`.`a1` = `test`.`c`.`c1`) and (`test`.`c`.`c1` > 1))
二 不存在嵌套连接
SQL语句的语义,是A和B先连接,然后再和C连接;查询执行计划是A和B先连接,然后再连接C。
mysql> EXPLAIN EXTENDED SELECT * FROM AJOIN B ON A.a1=B.b1 JOIN C ON B.b1=C.c1 WHERE A.a1>1;
+----+-------------+-------+------+----------------------------------------------------+
| id | select_type | table | type |Extra |
+----+-------------+-------+------+----------------------------------------------------+
| 1| SIMPLE | C | ALL | Using where |
| 1| SIMPLE | B | ALL | Using where; Using join buffer (Block Nested Loop) |
| 1| SIMPLE | A | ALL | Using where; Using join buffer (Block Nested Loop) |
+----+-------------+-------+------+----------------------------------------------------+
被查询优化器处理后的语句为:
/* select#1 */ select `test`.`a`.`a1` AS`a1`,
`test`.`a`.`a2` AS `a2`,
`test`.`b`.`b1` AS `b1`,
`test`.`b`.`b2` AS `b2`,
`test`.`c`.`c1` AS `c1`,
`test`.`c`.`c2` AS `c2`
from `test`.`a` join`test`.`b` join `test`.`c`
where ((`test`.`b`.`b1` = `test`.`c`.`c1`)and
(`test`.`a`.`a1`= `test`.`c`.`c1`) and (`test`.`c`.`c1` > 1))
- MySQL查询优化器--逻辑查询优化技术(三)--嵌套连接消除
- MySQL查询优化器--逻辑查询优化技术(五)--外连接的消除(一)
- MySQL查询优化器--逻辑查询优化技术(五)--外连接的消除(二)
- MySQL查询优化器--逻辑查询优化技术(四)--连接的消除
- MySQL查询优化器--逻辑查询优化技术(二)--子查询优化(三)
- MySQL查询优化器--逻辑查询优化技术(二)--子查询优化(二)
- MySQL查询优化器--逻辑查询优化技术(二)--子查询优化(四)
- MySQL查询优化器--逻辑查询优化技术(二)--子查询优化
- MySQL查询优化器--逻辑查询优化技术(六)--条件化简(表达式处理)
- MySQL查询优化器--逻辑查询优化技术(一)--视图重写
- MySQL查询优化器--逻辑查询优化技术(七)--等价谓词重写
- PostgreSQL查询优化器--逻辑查询优化--子查询优化(三)
- PostgreSQL查询优化器--逻辑查询优化--视图优化(三)
- SQL优化--逻辑优化--子查询优化(MySQL)
- MySQL查询优化器--语义优化(三)
- MySQL查询优化器--逻辑优化功能篇--目录
- MySQL 优化实例--查询优化 索引优化 逻辑优化
- SQL优化--逻辑优化--外连接、嵌套连接与连接消除
- Hadoop编程在HDFS里新建文件并写入内容,以及输出
- 梯度下降法
- Spring中bean的作用域scope详解
- MySQL查询优化器--逻辑查询优化技术(二)--子查询优化(四)
- Linux下安装theano
- MySQL查询优化器--逻辑查询优化技术(三)--嵌套连接消除
- ARM指令集2
- 算法-字符串之全排列
- ubuntu下卸载python2和升级python3.5
- CentOS6.8 网络配置ip 连接外网
- MySQL查询优化器--逻辑查询优化技术(四)--连接的消除
- 将Linux下python默认版本切换成替代版本
- MySQL查询优化器--逻辑查询优化技术(五)--外连接的消除(一)
- ubuntu16.04中将python3设置为默认