MYSQL - 在视图中多次调用函数时的性能问题

时间:2011-01-27 07:43:13

标签: mysql performance

我遇到了一种情况,我必须在视图中多次调用一个函数。类似的东西:

select a,b,c, GetRefund(a) AS REFUND, d-GetRefund(a) AS Payment_left FROM bla bla bla.

显然我无法将退款表加入此视图(否则我会这样做)。 似乎解释计划不考虑函数的原因,无论我使用它们多少次,解释看起来都一样。

我要问的是 - MYSQL是否对此进行了优化并实际调用该函数一次? 这样做有更好的解决方案吗? 非常感谢你!

1 个答案:

答案 0 :(得分:2)

没有。 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