日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

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

發(fā)布時(shí)間:2023/12/3 数据库 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql不支持子查询_MySQL不支持子查询优化一例 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

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

一創(chuàng)建表

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);

二 執(zhí)行計(jì)劃與問(wèn)題

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)

這個(gè)語(yǔ)句的執(zhí)行順序是怎么執(zhí)行的,就是按照?qǐng)?zhí)行計(jì)劃這樣從上到下執(zhí)行嗎?

三 分析

---id值為1的兩個(gè),,是From子句中的tt1和tt2,用塊嵌套循環(huán)連接算法做內(nèi)連接,tt2是外表,所以先啟動(dòng)的是tt2;后啟動(dòng)的是tt1。

---id值為2的是目標(biāo)列中的子查詢,后于FROM子句中的表執(zhí)行。發(fā)生在連接后要求目標(biāo)列的值發(fā)給客戶端階段。

---理論上是可以優(yōu)化的,方法為:目標(biāo)列只有一列和WHERE條件相同,所以,可以推知此子查詢的結(jié)果是2。

---但是,MySQL沒(méi)有優(yōu)化這樣的子查詢。

---另外,對(duì)于這里的子查詢,如果其結(jié)果返回多行,則MySQL會(huì)報(bào)告錯(cuò)誤:ERROR 1242 (21000): Subquery returns more than 1 row。

--------------------------------------分割線 --------------------------------------

Ubuntu 14.04下安裝MySQL

《MySQL權(quán)威指南(原書第2版)》清晰中文掃描版 PDF

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

Ubuntu 14.04下搭建MySQL主從服務(wù)器

Ubuntu 12.04 LTS 構(gòu)建高可用分布式 MySQL 集群

Ubuntu 12.04下源代碼安裝MySQL5.6以及Python-MySQLdb

MySQL-5.5.38通用二進(jìn)制安裝

--------------------------------------分割線 --------------------------------------

本文永久更新鏈接地址:

本條技術(shù)文章來(lái)源于互聯(lián)網(wǎng),如果無(wú)意侵犯您的權(quán)益請(qǐng)點(diǎn)擊此處反饋版權(quán)投訴

本文系統(tǒng)來(lái)源:php中文網(wǎng)

總結(jié)

以上是生活随笔為你收集整理的mysql不支持子查询_MySQL不支持子查询优化一例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。