我正在使用MySQL SELECT
查询,它使用存储函数进行一些计算(也涉及运行一些查询)。但我想按函数返回的值排序。
这样的事情:
SELECT func_call(t1.id1,t2.id2,SUM(t3.id3)) FROM table1 t1
JOINS ----
WHERE ---
GROUP BY (t2.id2)
ORDER BY func_call(t1.id1,t2.id2,SUM(t3.id3))
DESC LIMIT 10
现在是内部函数缓存维护了吗?我可以将结果以某种方式存储在变量中并使用它吗?我只想减少执行时间。
答案 0 :(得分:1)
任何体面的优化器都会对选择列表和order by子句使用相同的结果,而不会调用它两次。
但是,通过使用序数参数而不是列指定Reference is not allowed in prologue
列表,可以使查询不那么麻烦:
order by