当我在ORDER BY子句中使用别名时,是否会调用函数?

时间:2017-07-26 06:12:20

标签: mysql sql performance

以下是我的查询的简化版本:

SELECT myfunc(u.id) score FROM users u
ORDER BY score
LIMIT 20

如您所见,我在score子句中使用了myfunc() (这是ORDER BY函数的结果)。现在我想知道,当我在ORDER BY子句中使用它时,是否会调用该函数?如果是,那我怎么能避免呢?因为这个功能需要大量的处理和召回两次就像是一场噩梦。

1 个答案:

答案 0 :(得分:0)

可能不是,因为在订购完成之前已经准备好了数据。如果你还有疑问,可以通过让你的函数在运行之间做一些可见的事情来测试它(在表中增加一个值)

你可能会发现,它可以运行一百万次,每100万行一次,然后才能应用限制20 ..

如果你的函数非常慢,并且在插入时存储结果而不是每次运行查询时计算它都是明智的,那就