如何避免在SELECT中重复表达式?

时间:2015-09-28 14:15:37

标签: mysql sql select

我正在使用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

现在是内部函数缓存维护了吗?我可以将结果以某种方式存储在变量中并使用它吗?我只想减少执行时间。

1 个答案:

答案 0 :(得分:1)

任何体面的优化器都会对选择列表和order by子句使用相同的结果,而不会调用它两次。 但是,通过使用序数参数而不是列指定Reference is not allowed in prologue列表,可以使查询不那么麻烦:

order by