关于 left join 多张表后, order by 效率陡然下降,如何优化??

2020-08-25 10:53:28 +08:00
 JarvisRay

已经很多次碰到这种情况了,一直得不到很好的解决方案,写个帖子问问。

SELECT DISTINCT p.id, p.channel_id, o.channel_name, d.drug_manufacturer, p.patient_name, p.patient_gender, p.patient_age, p.patient_tel, p.diagnostic_name AS diagnosis, p.doctor_name, p.review_doctor_name AS pharmacist_name, p.pharmacist_name AS config_pharmacist_name, p.STATUS, p.review_time, p.rp_id, p.rp_url, p.refuce_reason, p.total_price, p.add_time FROM prescription_in_channel p, org_channel o, drug_in_channel d WHERE p.id = d.pre_id AND o.id = p.channel_id ORDER BY p.add_time DESC limit 1,10

上述语句中,没加 order by 目前是 0.2s 左右的时间,加了之后,变为 1.5s 。后期业务数据会逐步变多,我想到时候肯定就特慢了。 不知道有没有什么好的解决方案?

1866 次点击
所在节点    MySQL
5 条回复
des
2020-08-25 10:54:53 +08:00
先上个 explain 吧
weirdo
2020-08-25 10:58:18 +08:00
....你这没有 left join 啊。。
JarvisRay
2020-08-25 11:01:21 +08:00
@weirdo 不好意思。。。。。。。。我重新发帖,擦,语句搞错了
zshneedmoney
2020-08-25 11:04:35 +08:00
join (select add_time from prescription_in_channel ordrr by add_time DESC ) 别名 on p.add_time = 别名
zhz1237ok
2020-09-06 18:32:09 +08:00

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

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

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

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

© 2021 V2EX