为了账号安全,请及时绑定邮箱和手机立即绑定

直接用数据库进行inner join查询还是应该分两次查询?

直接用数据库进行inner join查询还是应该分两次查询?

隔江千里 2019-02-17 22:23:36
问题是这样的,详细描述请看后面。 inner join的方式与分开查询的方式相对比应该怎么使用,是应该一律用inner join还是要分情况考虑? 当我有上述这样的疑惑时,是否有什么办法自己实验来得到结果呢? 需求大概是这样:先从一个表里(User)找到几个满足条件的user_id, 再去另一个表里(Post)找到这几个人发的帖子的时间。 第一种方式很明确,inner join: SELECT u.user_id, p.create_time FROM User u INNER JOIN Post p ON u.user_id = p.user_id WHERE u.user_id < 100 AND u.user_id > 50 第二种方式:先单纯的查出这几个人: SELECT user_id FROM User WHERE user_id < 100 AND user_id > 50 得到一个user_id的数组,然后再用IN的方式去查出post: SELECT create_time FROM Post WHERE user_id IN (xxx)
查看完整描述

1 回答

?
不负相思意

TA贡献1777条经验 获得超10个赞

一定是优先使用INNER JOIN啦,假设你查出的user ids数组很大的话,会产生一个很长的字符串,生成很长的SQL,数据库parse这个SQL是要耗费多余的时间,并且如果JOIN的话,数据会有很多算法去优化你的查询的,IN并不能。

查看完整回答
反对 回复 2019-03-01
  • 1 回答
  • 0 关注
  • 874 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信