Optimizing a stored function call in SELECT and WHERE clauses

mysql, stored-functions

Solution

Rewrite and test which one performs faster:

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 ;

In MySQL, you can even write like this (warning: not standard SQL syntax):

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

Problem

I have an SQL query with the following structure: ``` SELECT *, storedfunc(param, table.field) as f FROM table WHERE storedfunc(param, table.field) < value ORDER BY storedfunc(param, table.field); ``` Is there a way to optimize this eliminating several function calls? Or does MySQL perform such optimization behind the scene? In fact the function is declared as deterministic. I need also to mention that the function params are partially from selected table's columns. I changed the example slightly to reflect this.

Original source