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

问题是这样的,详细描述请看后面。

  1. inner join的方式与分开查询的方式相对比应该怎么使用,是应该一律用inner join还是要分情况考虑?
  2. 当我有上述这样的疑惑时,是否有什么办法自己实验来得到结果呢?

需求大概是这样:先从一个表里(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)
隔江千里
浏览 880回答 1
1回答

不负相思意

一定是优先使用INNER JOIN啦,假设你查出的user ids数组很大的话,会产生一个很长的字符串,生成很长的SQL,数据库parse这个SQL是要耗费多余的时间,并且如果JOIN的话,数据会有很多算法去优化你的查询的,IN并不能。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python