问题是这样的,详细描述请看后面。
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并不能。
添加回答
举报
0/150
提交
取消