我有两个表,toynav_product_import-18533行,catalog_product_entity-42000行。
以下查询LEFT JOIN需要2分钟以上,而INNER JOIN则需要0.009秒。第一个表具有条形码字段的必要索引。
SELECT tpi.barcode FROM toynav_product_import tpi
INNER JOIN catalog_product_entity cpe ON tpi.barcode = cpe.sku
请告知
toynav_product_import
catalog_product_entity
答案 0 :(得分:1)
外部联接(LEFT JOIN或RIGHT JOIN)必须完成INNER JOIN的所有工作以及对结果进行空扩展的额外工作
即使在特定情况下LEFT JOIN更快,它在功能上也不等同于INNER JOIN,因此您不能简单地将一个实例的所有实例替换为另一个实例!
对不起,不能发表此评论
答案 1 :(得分:1)
LEFT JOIN
比Inner Join
慢。根据定义,外部联接(LEFT JOIN
或RIGHT JOIN
)必须完成INNER JOIN
的所有工作以及将结果空扩展的额外工作,这就是原因。并且与内部联接相比,它还返回更多的行数,因此这就是执行需要更多时间的原因。
但是,通过正确索引 外键 ,您肯定可以提高联接的性能。
这也取决于数据,并非总是左连接较慢的情况,有时左连接较快的情况,但根据上述原因,多数情况下内部连接较快。 请参阅此link,此人非常清楚地说明了区别。