我有数据来自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