如何快速从巨大的表中选择给定范围内的值的总和(德比)

时间:2011-04-29 08:49:31

标签: sql select derby

我得到了A和B表:

表A

a   b   mount
a0  b0  0.0001
a0  b1  0.0002

表B

c   d   weight
c0  d0  0.99998
c0  d1  0.99996

每张表都有10,000 - 100000条记录。

我希望获得mount+weight >= 0.9998mount+weight <= 0.9999的所有组合,例如:

a   b   c   d    sum
a0  b0  c0  d0   0.9999
a0  b1  c0  d1   0.9998 

但是如果我尝试这些方式需要花费很多时间:

方法1

SELECT a b c d mount+weight
FROM A,B 
WHERE mount+weight >= 0.9998 and mount+weight <= 0.9999

表有挂载索引,B表有权重索引

方法2

创建A+B表,但它比方法1花费更多时间。

有什么方法可以改善吗?

1 个答案:

答案 0 :(得分:0)

SELECT a, b, c, d, mount+weight as mw
FROM A,B 
WHERE mount+weight between 0.9998 and 0.9999

这可能会产生略微不同的执行计划

编辑:我刚才意识到这是针对德比的。甚至不确定BETWEEN是否在Derby中可用