Mysql
 sql >> Base de données >  >> RDS >> Mysql

Optimisation d'un appel de fonction stockée dans les clauses SELECT et WHERE

Réécrivez et testez lequel fonctionne le plus rapidement :

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 ;

Dans MySQL, vous pouvez même écrire comme ceci (attention :pas de SQL standard syntaxe):

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