我使用PHP Mysql.Here是我的查询,它的加载时间约为3-4分钟。如何在1分钟内加载它。
SELECT buyer.Buyer, ordr.ordr, ordr.Ship_Date, colour.Colour,
sewing_effi.OP, sewing_effi.HEL, sewing_effi.Target, sewing_effi.TWH,
SUM(v_ci_input.qc_pass) AS Input,
SUM(sewing_input_daily.qc_pass) AS DInput,
SUM(sewing_output.Recieved) AS Recv,
SUM(sewing_output.QC_Pass) AS Toutput,
SUM(sewing_output_daily.QC_Pass) AS Doutput,
floor_line.Line,
floor_line.floor
FROM v_ci_input
LEFT JOIN buyer
ON v_ci_input.Buyer=buyer.CBuyer
LEFT JOIN ordr
ON v_ci_input.Buyer=ordr.CBuyer AND
v_ci_input.Ordr=ordr.COrdr
INNER JOIN colour
ON v_ci_input.Buyer=colour.CBuyer AND
v_ci_input.Ordr=colour.COrdr AND
v_ci_input.Colour=colour.CColour
LEFT JOIN sewing_input_daily
ON v_ci_input.Barcode=sewing_input_daily.Barcode
LEFT JOIN sewing_output_daily
ON v_ci_input.Barcode =sewing_output_daily.Barcode
LEFT JOIN sewing_output
ON v_ci_input.Barcode = sewing_output.Barcode
RIGHT JOIN floor_line
ON floor_line.Line= v_ci_input.Line
JOIN sewing_effi
ON floor_line.Line=sewing_effi.Line
WHERE Ship_Status=0 AND floor_line.Line in('301')
AND sewing_effi.DT=CURDATE()
GROUP BY floor_line.Line,
v_ci_input.Buyer,
v_ci_input.Ordr,
v_ci_input.Colour
ORDER BY floor_line.Line ASC"
答案 0 :(得分:0)
第一条规则:检查您要加入的列上是否有工作和有用的索引。这是最常见的错误,通常是最大的性能损失。重写您的查询以仅使用LEFT JOIN
,并尽可能避免使用OUTER JOIN
。
如果没有详细说明,就不可能给出任何好的建议。你知道正在使用什么执行计划吗?数据的大小和分布统计数据是多少?每列实际意味着什么以及您想对查询做什么?你有多少RAM,你的CPU和磁盘是什么?数据库优化是一个庞大而复杂的主题......