【发布时间】:2010-06-13 07:05:27
【问题描述】:
我有一个场景,我在我的 SQL 的 WHERE 子句中计算一些东西,但我也想得到那个计算 - 因为它很昂贵。是否有可能在WHERE 子句中完成某些操作的结果,如下所示:
SELECT `foo` FROM `table` WHERE (foo = LongCalculation(`column`))
一厢情愿,还是有可能使用 MySQL?
编辑:计算取决于列
【问题讨论】:
-
如果您有 1000 行并且 LongCalculation 将使用 1000 个不同的输入运行,那么就没有解决方案。但是,如果不同值的数量远小于 1000,那么您可以在 LongCalculation 中使用中间缓存存储,这当然必须是一个存储过程。不知道是否可以在存储过程调用之间保留变量值。
-
您可以使用临时表来存储特定输入的计算输出。
-
查看我的回答,了解我是如何解决这个问题的。我并不是要避免计算每一行,而是每行不止一次。