200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > mysql不支持子查询_MySQL不支持子查询优化一例

mysql不支持子查询_MySQL不支持子查询优化一例

时间:2020-10-12 13:09:34

相关推荐

mysql不支持子查询_MySQL不支持子查询优化一例

一创建表 create table tt1(id int primary key, c1 INT);create table tt2(id int primary key, c2 INT);insert into tt1 value

一创建表

create table tt1(id int primary key, c1 INT);

create table tt2(id int primary key, c2 INT);

insert into tt1 values(1,1),(2,2),(3,3),(4,4);

insert into tt2 values(1,2),(2,2);

二 执行计划与问题

mysql> explain EXTENDED SELECT tt1.c1, (SELECT tt2.c2 FROM tt2 WHERE c2=10) FROM tt1, tt2;

+----+-------------+-------+-------+---------------+---------+---------+------+------+----------+---------------------------------------+

| id | select_type | table | type | possible_keys | key | key_len | ref | rows | filtered | Extra |

+----+-------------+-------+-------+---------------+---------+---------+------+------+----------+---------------------------------------+

| 1 | PRIMARY | tt2 | index | NULL | PRIMARY | 4 | NULL | 2 | 100.00 | Using index |

| 1 | PRIMARY | tt1 | ALL | NULL | NULL | NULL | NULL | 4 | 100.00 | Using join buffer (Block Nested Loop) |

| 2 | SUBQUERY | tt2 | ALL | NULL | NULL | NULL | NULL | 2 | 100.00 | Using where |

+----+-------------+-------+-------+---------------+---------+---------+------+------+----------+---------------------------------------+

3 rows in set, 1 warning (0.00 sec)

这个语句的执行顺序是怎么执行的,就是按照执行计划这样从上到下执行吗?

三 分析

---id值为1的两个,,是From子句中的tt1和tt2,用块嵌套循环连接算法做内连接,tt2是外表,所以先启动的是tt2;后启动的是tt1。

---id值为2的是目标列中的子查询,后于FROM子句中的表执行。发生在连接后要求目标列的值发给客户端阶段。

---理论上是可以优化的,方法为:目标列只有一列和WHERE条件相同,所以,可以推知此子查询的结果是2。

---但是,MySQL没有优化这样的子查询。

---另外,对于这里的子查询,如果其结果返回多行,则MySQL会报告错误:ERROR 1242 (21000): Subquery returns more than 1 row。

--------------------------------------分割线 --------------------------------------

Ubuntu 14.04下安装MySQL

《MySQL权威指南(原书第2版)》清晰中文扫描版 PDF

Ubuntu 14.04 LTS 安装 LNMP Nginx\PHP5 (PHP-FPM)\MySQL

Ubuntu 14.04下搭建MySQL主从服务器

Ubuntu 12.04 LTS 构建高可用分布式 MySQL 集群

Ubuntu 12.04下源代码安装MySQL5.6以及Python-MySQLdb

MySQL-5.5.38通用二进制安装

--------------------------------------分割线 --------------------------------------

本文永久更新链接地址:

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:php中文网

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。