假设此表:posts_groups
+---------+----------+--------+
| post_id | group_id | type |
+---------+----------+--------+
| 1 | 1 | public | // group #1 sees post #1 where type is public
+---------+----------+--------+
桌子:
posts
+----+--------+
| id | type |
+----+--------+
| 1 | public | // example : post #1 is public
+----+--------+
查询1
SELECT post_id FROM posts_groups pg
JOIN posts p ON p.id = pg.post_id
WHERE group_id = 1 AND pg.type = public
好吧,这个检查组是1,并且从当前表中
type
,然后选择一些post\u id。查询2
SELECT post_id FROM posts_groups pg
JOIN posts p ON p.id = pg.post_id
WHERE group_id = 1 AND p.type = public
此查询也在执行相同的操作。但是从POSTS表中检查
type
。但哪种方法更快,性能更好。你知道这两个查询是如何工作的吗。
条件处理!
在查询1中,它显示if(group_id=1,p.type=public),然后if(post.id=posts_groups.id)加入posts
在查询2中,它显示if(group_id=1)THEN if(post.id=posts_groups.id)THEN if(posts.type=public)JOIN posts。
query2的过程要长一些。或者我的逻辑是错误的!!!
提前谢谢。
最佳答案
两个查询没有区别,只要继续尝试使用您喜欢的查询。
编辑:当你编辑你的问题。
它们在WHERE子句之前连接,所以没有区别。从第一个或第二个表中获取条件,因为它们首先连接。