sql >> Base de Datos >  >> RDS >> Mysql

Optimización de una llamada de función almacenada en las cláusulas SELECT y WHERE

Vuelva a escribir y pruebe cuál funciona más 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 ;

En MySQL, incluso puede escribir así (advertencia:SQL no estándar sintaxis):

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