MySQL視圖我有這樣的看法:優化與聚合函數
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秒完成。
是否有任何其他方式來優化此查詢?
[MySQL視圖作爲性能搗亂](http://www.mysqlperformanceblog.com/2007/08/12/mysql-view-as-performance-troublemaker/) –