哪个更有效?
LEFT JOIN cscart_seo_names seo
ON p.product_id = seo.object_id AND seo.type = 'p'
OR
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
答案 0 :(得分:1)
检查效率的唯一可靠方法是检查实际执行计划。注意,执行顺序不同于查询中出现的顺序表。
在这种特殊情况下(假设它不是更大查询的一部分),我非常确定优化器会为您的查询的两个版本选择相同的计划......
答案 1 :(得分:0)
JOIN可以创建一个更适合您的查询的执行计划,并且可以预测应该加载哪些数据以进行处理并节省时间,这与子查询不同,在子查询中它将运行所有查询并加载所有数据以执行处理
子查询的好处是它们比JOIN更具可读性:这就是大多数新SQL用户更喜欢它们的原因;这是简单的方法;但是在性能方面,JOINS在大多数情况下都更好,即使它们也不难阅读。