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/) –