私はこのビューを持っています:
CREATE VIEW invoicereport
SELECT i.ID, SUM(o.Amount * o.Price) AS Total
FROM invoice i
JOIN `order` o ON i.ID = o.InvoiceID
GROUP BY i.ID
このクエリを直接実行すると、0.03 秒かかります。ただし、ビューの実行には 2 秒かかります。私がやっSELECT * FROM invoicereport WHERE ID=9000
たとしても、まだ2秒かかります。
したがって、ビューを次のように書き直します。
CREATE VIEW invoicereport
SELECT i.ID, (SELECT SUM(Amount * Price) FROM `order` WHERE InvoiceID=i.ID) AS Total
FROM invoice i
サブクエリはID 9000に対してのみ実行されると思っていました。その後、実行SELECT * FROM invoicereport WHERE ID=9000
するとさらに遅くなり、完了するまでに3秒かかります。
このクエリを最適化する他の方法はありますか?