我遇到一种情况,我必须在视图中多次调用一个函数。就像是:
select a,b,c, GetRefund(a) AS REFUND, d-GetRefund(a) AS Payment_left FROM bla bla bla.
显然,我无法将退款表加入该视图(否则我会这样做)。
似乎无论我使用多少次,解释计划都没有考虑功能的原因,解释看起来是一样的。
我要问的是-MYSQL是否对此进行了优化并实际上一次调用了该函数?
有更好的解决方案吗?
非常感谢你!
最佳答案
否。MySQL为每个选定的行两次调用此函数
有更好的解决方案吗?我们需要更多地了解您的数据库结构,但是像这样的事情应该使它减少到每行一个函数调用:
SELECT
a,b,c, REFUND, d-REFUND AS PaymentLeft
FROM (
select a,b,c,d, GetRefund(a) AS REFUND FROM bla bla bla
) AS sq
关于mysql - MYSQL-在 View 中多次调用函数时的性能问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4813843/