关于 join 和 子查询的效率问题

流浪车手 2019-08-18 12:36:59
现在有一个简单的情景假设:
数据库中有两张表,分别为用户表user(属性id name)和用户意向表userinter(属性id userid inter,其中userid关联自user表的id),

现在我要查询出每个用户的意向:
join示例:
 select a.id,a.name,b.inter from user a join userinter b on a.id=b.userid;

子查询示例:
 select a.id,a.name,(select b.inter from userinter b where b.id=a.id) as yx from user a having yx is not null;


这两种方式查询出来的结果是一样的,网上都说在数据量大的时候推荐用join而不是子查询,原因是因为子查询依赖于外层查询,对于每个外层查询都要执行一遍子查询。

那么join是怎么查的?

希望各位网友专家帮忙解答下,不胜感激!

...全文
792 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
流浪车手 2019-08-21
  • 打赏
  • 举报
回复
引用 2 楼 AHUA1001 的回复:
这个问题要根据实际的业务场景、数据结构、现有索引、表中的数据量决定,不能一概而论。
谢谢回复
流浪车手 2019-08-21
  • 打赏
  • 举报
回复
引用 1 楼 你是小KS 的回复:
根据关键的表字段之间的关系,进行链接查询,一般建议不使用子查询
谢谢回复
AHUA1001 2019-08-20
  • 打赏
  • 举报
回复
这个问题要根据实际的业务场景、数据结构、现有索引、表中的数据量决定,不能一概而论。
编程写手 2019-08-19
  • 打赏
  • 举报
回复
根据关键的表字段之间的关系,进行链接查询,一般建议不使用子查询

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧