我在我的应用中有加载用户流的查询,如果我们在'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
答案 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必须检查每行返回的所有东西......而不是在你加入时检查一次..