1

哪个更有效率?

LEFT JOIN  cscart_seo_names seo
ON p.product_id = seo.object_id AND seo.type = 'p'

或者

LEFT JOIN (
            SELECT seo.object_id, seo.name
            FROM cscart_seo_names seo
            WHERE seo.type = 'p'
        ) seo
            ON p.product_id = seo.object_id
4

2 回答 2

1

检查效率的唯一可靠方法是检查实际的执行计划。注意,执行顺序不同于查询中出现的顺序表。

在这种特殊情况下(假设它不是更大查询的一部分),我很确定优化器将为您的查询的两个版本选择相同的计划......

于 2013-09-21T04:20:38.093 回答
0

JOIN 可以创建一个更适合您的查询的执行计划,并且可以预测应该加载哪些数据以进行处理并节省时间,这与子查询不同,子查询将运行所有查询并加载所有数据以进行处理。

子查询的好处是它们比 JOIN 更具可读性:这就是大多数新 SQL 人更喜欢它们的原因;这是简单的方法;但是在性能方面,JOINS 在大多数情况下都更好,即使它们也不难阅读。

于 2013-09-21T03:50:19.063 回答