我遇到一种情况,我必须在视图中多次调用一个函数。就像是:

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/

10-13 09:29