比如下面的 sql
SELECT * FROM tb_package p LEFT JOIN tb_package pt ON pt.package_id = p.package_id AND pt.type != 0 LEFT JOIN tb_package_item pi ON pi.package_id = p.package_id LEFT JOIN tb_package_log pl ON pl.package_id = p.package_id and pl.status = 40 LEFT JOIN tb_bill w ON w.id = pi.bill_id WHERE p.mhid = 110 ORDER BY p.create_time DESC LIMIT 0, 20;
把 AND pt.type != 0 这句放在连表单后面就没有 using filesort using temporary
但是放在 where 后面就会使用 using filesort using temporary
这是为什么呢?
1
msg7086 2018-11-14 17:10:03 +08:00
因为 ON 和 WHERE 的阶段是不一样的?
我也不太懂 SQL,只能抛个砖…… |