首页 > 数据库技术 > 详细

Mysql 关联子查询---In

时间:2020-04-27 10:36:36      阅读:66      评论:0      收藏:0      [点我收藏+]

Mysql的子查询实现得非常糟糕,最糟糕的一类查询是where条件中包含In()的子查询语句。

select * from cteam where pid in (select boss_id from mteam where boss_id = 123456)

缺点:Mysql会将相关的外层表压到子查询中,它认为这样可以更高效查找到数据行

技术分享图片

根据explain的输出我们可以看到,Mysql先选择对cteam表进行全表扫描,然后根据返回的pid逐个执行子查询,如果是一个很小的表,这个查询糟糕的性能可能还不会引起注意,但是如果

外层的表是一个非常大的表,那么这个查询的性能会非常糟糕。

重新SQL语句:

select c.* from cteam c right join mteam m on c.pid = m.boss_id where m.boss_id = 123456

技术分享图片

 

Mysql 关联子查询---In

原文:https://www.cnblogs.com/Mr-Echo/p/12784633.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!