并行从db2表中选择数据

时间:2018-03-14 05:35:00

标签: sql db2

我正在尝试从db2数据库中的同一个表中的4个不同客户端获取相同数量的记录。我需要确保每个sql以相同的音量提取不同的行集。该表有一个18位数字作为随机生成的主键。如何确保在第一个sql中选择的记录不存在于任何其他sqls中。

3 个答案:

答案 0 :(得分:3)

这会影响性能,但您可以使用模数:

SELECT ...
FROM table
WHERE MOD(pkey, 4) = 1 --or 2, 3, 0

您还说了一些关于具有相同结果集大小的内容,您可以使用FETCH FIRST x ROWS ONLY来限制相同的大小。

根据问题的“原因”,可能还有其他选项 - OLAP函数,隐藏列,功能索引,视图和其他工具可能是更好的答案。 MOD很简单。

答案 1 :(得分:0)

可能你只能在这样的查询中做到这一点:

select * from (
select f1.*, rownumber() over(partition by clientid order by f1.pkey, f1.clientid) rang
from yourtable f1
where f1.clientid in (4, 8, 9, 5) --> put your client id here
) f2 
where f2.rang<5 --> 5 if you want only 5 rows by client

答案 2 :(得分:-1)

Db2联盟可能是您问题的答案。这将允许针对已在一个数据库中定义的四个源数据库运行单个SQL语句。 UNION将确保数据的重复数据删除。

可以找到详细信息here