Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Optimieren eines gespeicherten Funktionsaufrufs in SELECT- und WHERE-Klauseln

Schreiben Sie um und testen Sie, welche schneller ist:

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 können Sie sogar so schreiben (Warnung:kein Standard-SQL Syntax):

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