这是我的查询:
SELECT B.RECORDID, A.ITEMCODE, A.ITEMNAME, A.STOCKINHAND, B.SALEPRICE
FROM ITEMMASTER A, STOCKENTRY B
WHERE A.ITEMID = B.ITEMID
AND RECORDID = (SELECT MAX(RECORDID) FROM STOCKENTRY
WHERE ITEMID = A.ITEMID)
AND A.STOCKINHAND > 0
AND B.SALEPRICE > 0
AND B.INVOICEDATE IS NOT NULL
ORDER BY A.ITEMNAME, B.INVOICEDATE;
表 B (StockEntry) 可能包含一条或多条记录,而表 A (ItemMaster) 肯定只有该 ItemID 的一行。
如果我删除 WHERE 子句中的子查询,它会显示一行或多行。我觉得通过 WHERE 子句中的子查询选择 max(RecordID) 会减慢查询速度。我在 RecordID、InvoiceDate、ItemID 上确实有索引,但MySQL日志仍然显示此查询执行不佳。由于某种原因,我无法更改列顺序。
有没有更好的方法来优化这个查询?