SQL 案例为什么会使用 using filesort

2018-11-14 16:50:24 +08:00
 cc959798

比如下面的 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

这是为什么呢?

1234 次点击
所在节点    问与答
2 条回复
msg7086
2018-11-14 17:10:03 +08:00
因为 ON 和 WHERE 的阶段是不一样的?
我也不太懂 SQL,只能抛个砖……
cc959798
2018-11-14 17:12:45 +08:00
@msg7086 是不太一样一个连接时过滤,一个是过滤行,但是感觉不应该产生这两个问题

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/507817

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX