gpt4 book ai didi

mysql - 使用聚合函数优化 MySQL View

转载 作者:行者123 更新时间:2023-11-29 03:41:05 36 4
gpt4 key购买 nike

我的看法是:

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 秒。但是运行 View 需要 2 秒。即使当我执行 SELECT * FROM invoicereport WHERE ID=9000 时,它仍然需要 2 秒。

所以我将 View 重写为:

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 秒才能完成。

还有其他方法可以优化这个查询吗?

最佳答案

我觉得这些表没有必要join,只要order分组就可以了。 (只是我的观点)。像这样:

CREATE VIEW INVOICEREPORT
SELECT O.INVOICEID as ID, SUM(O.AMOUNT * O.PRICE) AS TOTAL
FROM `ORDER` O
GROUP BY O.INVOICEID

然后你就可以和其他人一起加入这个 View 了。并在 order 上使用索引。

关于mysql - 使用聚合函数优化 MySQL View,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13775806/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com