mysql:子查询返回很多行

时间:2014-08-11 19:15:40

标签: mysql

我在我的应用中有加载用户流的查询,如果我们在'follow'中有10000个匹配行,那会难吗?

SELECT * 
FROM post 
WHERE user_id 
IN (SELECT follow_id 
   FROM follow 
   WHERE id='$some_id') 
AND type='accepted' 
ORDER BY id DESC LIMIT $page , 20

2 个答案:

答案 0 :(得分:0)

随着那么多回归,我感觉加入可能更有效率

SELECT * 
FROM post p Join
     follow f On p.user_id = f.follow_id
WHERE f.id='$some_id'
AND   p.type='accepted' 
ORDER BY p.id DESC LIMIT $page , 20

答案 1 :(得分:0)

从语法上来说,你的代码看起来是正确的..我没有看到任何错误,所以如果你谈论效率我会加入表并在JOIN上包含第二个过滤器

SELECT p.*
FROM post p
JOIN follow f 
    ON f.follow_id = p.user_id 
   AND f.id = '$some_id'
WHERE p.type = 'accepted'
ORDER BY p.id DESC LIMIT $page , 20

MySQL通过连接比使用IN()...

更好地处理大量数据

这样想吧..因为IN()里面几乎可以有任何东西,MySQL必须检查每行返回的所有东西......而不是在你加入时检查一次..