MYSQL 联表查询 ORDER 效率低?
今天在處理一個分頁時候,發現速度感人,點下一頁等了半天。然后查看代碼,發現是一個left jion語句。
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
這條語句執行了2分鐘。本來覺得是因為聯表查詢了多個數據的問題,經過測試,發現是order by排序數據量多的話就相當的慢。
經過百度,發現首先要將無用數據篩掉,篩選出符合條件的數據,減少資源消耗。
于是優化后的語句:
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;
只需要時間: 0.888s
轉載于:https://www.cnblogs.com/lizhengyu/p/6830838.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的MYSQL 联表查询 ORDER 效率低?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【JavaScript高级程序设计】读书
- 下一篇: EXCEL中数据筛选方法