MYSQL 联表查询 ORDER 效率低?
今天在處理一個(gè)分頁(yè)時(shí)候,發(fā)現(xiàn)速度感人,點(diǎn)下一頁(yè)等了半天。然后查看代碼,發(fā)現(xiàn)是一個(gè)left jion語(yǔ)句。
SELECT DISTINCT ordr.id,ordr.*,cf.nickname FROM order LEFT JOIN fans ON order.openid=fans.openid where order.mid=3 AND fans.mid=3 AND order.ispay="1" AND order.pay_way="alipay" ORDER BY order.paytime DESC,order.id DESC LIMIT 0,20
這條語(yǔ)句執(zhí)行了2分鐘。本來覺得是因?yàn)槁?lián)表查詢了多個(gè)數(shù)據(jù)的問題,經(jīng)過測(cè)試,發(fā)現(xiàn)是order by排序數(shù)據(jù)量多的話就相當(dāng)?shù)穆?/p>
經(jīng)過百度,發(fā)現(xiàn)首先要將無用數(shù)據(jù)篩掉,篩選出符合條件的數(shù)據(jù),減少資源消耗。
于是優(yōu)化后的語(yǔ)句:
SELECT DISTINCT order.id,order.*,fans?.nickname FROM (select * from order where ispay="1" ORDER BY paytime DESC,id DESC LIMIT 0,20) as order LEFT JOIN fans AS cf ON order.openid=fans.openid;
只需要時(shí)間: 0.888s
轉(zhuǎn)載于:https://www.cnblogs.com/lizhengyu/p/6830838.html
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的MYSQL 联表查询 ORDER 效率低?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【JavaScript高级程序设计】读书
- 下一篇: JBoss/Wildfly 配置SQLs