Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Otimizando uma chamada de função armazenada em cláusulas SELECT e WHERE


Reescreva e teste qual deles executa mais rápido:
SELECT *, storedfunc(param, table.column) AS f 
FROM table 
WHERE storedfunc(param, table.column) < value 
ORDER BY f ;

SELECT *
FROM
  ( SELECT *, storedfunc(param, table.column) AS f 
    FROM table 
  ) AS tmp
WHERE f < value 
ORDER BY f ;

No MySQL, você pode até escrever assim (aviso:não SQL padrão sintaxe):
SELECT *, storedfunc(param, table.column) AS f 
FROM table 
HAVING f < value 
ORDER BY f ;