select
h.TransferHeaderId,
h.TransferCode,
h.BizStatus,
l.TransferLineNum,
w.WoTransferCode,
w.WoStatus,
ph.BIZ_PONU,
pl.ITEM_NUMBER,
pl.ITEM_NAME,
pl.ITEM_TYPE,
l.TransferAmount,
l.TransferAmountNoTax,
ph.TRANS_CURRENCY_NAME,
pl.CONTRACT_CODE,
pl.CONTRACT_NAME,
l.PostingDate,
ph.SUPPLIER,
ph.SUPPLIER_NAME,
pl.PROJ_CODE,
pl.PROJ_NAME,
pl.proj_custom_code,
pl.WBS,
r.TransferDate,
r.CreateDate,
rr.TransferDate as TransferWODate,
rr.CreateDate as CreateWODate
from mm_transfer_header h
LEFT JOIN mm_transfer_rev r on (h.TransferHeaderId = r.TransferHeaderId and r.ReviewType = 'D1' and r.Status = '0')
LEFT JOIN mm_transfer_rev rr on (h.TransferHeaderId = rr.TransferHeaderId and rr.ReviewType = 'D2' and rr.Status = '0')
LEFT JOIN mm_transfer_wo w on (h.TransferHeaderId = w.TransferHeaderId and w.Status = '0')
LEFT JOIN mm_transfer_line l on (h.TransferHeaderId = l.TransferHeaderId)
LEFT JOIN mm_po_header ph on (l.PoOutHeaderId = ph.ID)
LEFT JOIN mm_po_item pl on (ph.ID = pl.HEADER_ID and l.PoOutLineId = pl.ID)
现在数据查询需要花1000秒的时间,求优化方案
目测,正确的索引是关键。
执行计划看看哪里慢了,再具体问题具体分析。
优化原则,能快速缩小结果集的where 写在前面
合适的索引,合适的联接操作执行顺序,具体你需要先explain打印出执行计划,再根据具体情况进行优化。
参考自:
MySQL如何优化LEFT JOIN和RIGHT JOIN http://www.data.5helpyou.com/article211.html
MySQL如何优化嵌套Join http://www.data.5helpyou.com/article272.html
如何不了解执行计划的内容,可以参阅:
mysql执行计划(explain)详解 http://www.data.5helpyou.com/article215.html