mysql 想实现下面的查询功能:
select f(c1,c2) as t1,f(t1,c3) as t2,f(t2,c4) as t3 from table1
其中
f(c1,c2)表示一个公式,引用了c1和c2列,如c1+c2
f(t1,c3)表示公式引用了上面的查询结果t1和列c3,如t1*c3
其他的类似。
我现在的做法是把t1用f(c1,c2)替代,变成了select f(c1,c2),f(f(c1,c2),c3),f(f(f(c1,c2),c3),c4) as t3 from table1这样嵌套下去,后面的公式会很长,而且重复计算,不会利用以前的计算结果,查询速度会很慢。我想知道,有没有好的办法,解决这个难题呢?

解决方案 »

  1.   


    你的sql之所以慢是因为,在sql里 如果使用了函数,那么会对于每一行返回的数据,都会调用一次 函数,你写了那么多函数,而且还有那么多嵌套函数,速度肯定是会很慢。我觉得,你最好是在存储过程里实现,或者是先把结果返回,然后在程序里 计算,这样可能很容易实现,速度也快
      

  2.   

    有没有好的计算表达式的类,比如:计算c1+c2*0.7+pow(c3,6)这样的表达式,java实现