1.數(shù)據(jù)集需要多表查詢我使用了left join 進(jìn)行表關(guān)聯(lián)酣藻,`outbound`表的數(shù)據(jù)大楷有幾萬(wàn)條曹洽,以下的查詢速度相當(dāng)?shù)穆竺姘俣日f(shuō)要建索引辽剧,重新建索引太麻煩了送淆,于是我換了一種思路
SELECT IFNULL(SUM(`finishnum`),0) as turnoverNum FROM `outbound_item` oi
LEFT JOIN `outbound` o ON oi.`outboundcode`=o.`outboundCode`
LEFT JOIN `appliance` a ON a.`applianceNo`=oi.`applianceNo`
WHERE o.`finishDate` LIKE CONCAT('%','2020-07','%') AND a.`applianceType`='2'
查詢時(shí)間為:(我的天啦,太慢了)
2.我詢問(wèn)了一個(gè)大佬怕轿,他說(shuō)分解去寫(xiě) sql偷崩,這樣效率最高,sql能不用 join 就不用撞羽,單表的查詢效率是最高的阐斜,寫(xiě)代碼執(zhí)行效率絕對(duì)提升,于是把sql語(yǔ)句分解成入下圖诀紊。
(建議:兩表可以考慮用 join谒出,三張表、包括以上就不考慮用join邻奠,具體解釋可參考一下文檔https://blog.csdn.net/j3T9Z7H/article/details/103193164)
SELECT IFNULL(SUM(finishnum),0) as turnoverNum
FROM outbound_item
WHERE
outboundCode
IN (SELECT outboundCode FROM outbound WHERE finishDate LIKE CONCAT('%','2020-07','%'))
AND applianceNo
IN (SELECT applianceNo FROM appliance WHERE applianceType = 2)
查詢時(shí)間為:(好快呀笤喳,開(kāi)心)
歡迎大家投稿,菜鳥(niǎo)程序員飛真順獻(xiàn)上碌宴。V:yqf822547775