[英]Using condition in where clause is better or join clause?
请假设以下查询:
SELECT p.* FROM posts p
JOIN posts_tags pt ON pt.post_id = p.id
JOIN tags t ON pt.tag_id = t.id AND t.name = 'php'
SELECT p.* FROM posts p
JOIN posts_tags pt ON pt.post_id = p.id
JOIN tags t ON pt.tag_id = t.id
WHERE t.name = 'php'
如您所知,两者的结果相同。 但是此条件t.name = 'php'
在第一个查询的JOIN
子句中,而在第二个查询的WHERE
子句中。 我想知道哪个更好,为什么?
通常,在Where
子句中添加条件可使代码更清晰。 将它们添加到AND子句时,会感觉到JOIN基于两个字段的组合。
在大表的情况下,在Where子句中添加条件可能有助于优化器甚至在连接之前就过滤掉记录。 我建议将其保留在WHERE
子句中。
编辑另外,请参阅以下相关文章:结合最佳实践
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.