为什么“左联接”比“内联接”要慢得多?

时间:2019-05-23 06:53:53

标签: mysql

我有两个表,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

enter image description here

catalog_product_entity

enter image description here

2 个答案:

答案 0 :(得分:1)

外部联接(LEFT JOIN或RIGHT JOIN)必须完成INNER JOIN的所有工作以及对结果进行空扩展的额外工作

即使在特定情况下LEFT JOIN更快,它在功能上也不等同于INNER JOIN,因此您不能简单地将一个实例的所有实例替换为另一个实例!

对不起,不能发表此评论

答案 1 :(得分:1)

LEFT JOINInner Join慢。根据定义,外部联接(LEFT JOINRIGHT JOIN)必须完成INNER JOIN的所有工作以及将结果空扩展的额外工作,这就是原因。并且与内部联接相比,它还返回更多的行数,因此这就是执行需要更多时间的原因。 但是,通过正确索引 外键 ,您肯定可以提高联接的性能。

这也取决于数据,并非总是左连接较慢的情况,有时左连接较快的情况,但根据上述原因,多数情况下内部连接较快。 请参阅此link,此人非常清楚地说明了区别。