[英]SQL performance of filter in join vs in results where
我需要加入 2 个表,但其中一个有一个必须应用的常量过滤器,我的问题是在性能方面哪个选项更好:
在“FROM”上使用常量过滤器并设置如下别名:
SELECT <result fields> FROM (SELECT <table A fields> FROM filtered_table WHERE field = value) AS A LEFT OUTER JOIN tableB ON A.id = tableB.id
在主查询的WHERE
中设置过滤器:
SELECT <result fields> FROM filtered_table AS A LEFT OUTER JOIN tableB ON A.id = tableB.id WHERE a.field = value
大多数数据库会将这两种形式视为相同的——它们在逻辑上是相同的,优化器知道这一点。
一些数据库倾向于物化子查询。 MySQL就是其中之一。 在该数据库中,子查询可能会更昂贵,因为它会写出子查询。
我建议在没有子查询的情况下编写代码。 它的编写和读取都更简单,而且它的性能永远不会比子查询方法差。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.