我有數據來自3個不同的錶快到了,我需要做它們之間的一些條件選擇。 DB查詢如下:MySQL的多表連接
SELECT proddb.onrrnr,
proddb.onr AS tellimus,
proddb.idnr AS ID,
proddb.prod AS toode,
proddb.proddate,
CASE
WHEN pf_prodQtySeq.glLiteNr = 1 THEN pf_ordRowSeq.gl1
WHEN pf_prodQtySeq.glLiteNr = 2 THEN pf_ordRowSeq.gl2
WHEN pf_prodQtySeq.glLiteNr = 3 THEN pf_ordRowSeq.gl3
WHEN pf_prodQtySeq.glLiteNr = 4 THEN pf_ordRowSeq.gl4
END AS klaas,
Sum(pf_prodQtySeq.planQty) AS kogus
FROM proddb
JOIN pf_prodQtySeq
ON proddb.onrrnr = pf_prodQtySeq.onrrnr
JOIN pf_ordRowSeq
ON proddb.onrrnr = pf_ordRowSeq.onrrnr
WHERE pf_prodQtySeq.prLineSh = 'HEG'
AND pf_prodQtySeq.planQty > 0
GROUP BY proddb.idnr
ORDER BY klaas DESC LIMIT 1000,25;
編輯:在代碼存在哪裏還ORDER和LIMIT子句,LIMIT是本果然查詢執行速度降低到10秒,而不會限制查詢需要大約小於1秒。如何優化LIMITing?
這個查詢工作確定,但它需要太多的時間來執行。此查詢大約需要5秒,但每個表只包含少於50 000行。試了兩次更快,並有更多的RAM服務器;也是同樣的時間。表格被索引。 是否有與查詢加快或我需要鞏固表。這意味着所有的數據將在一個表中。
'這個查詢的工作OK' ...不是真的,因爲你在使用'集團BY'選擇非聚合列。也許添加一個關於查詢應該做什麼的描述。 –
您可以嘗試使用'inner join',而不是'join'。 –
使用'EXPLAIN'來檢測查詢性能改進的方式。你也可以在你的問題中顯示'EXPLAIN'結果。 – Alexander