如何通过一次调用获得db2有序集合中的集合大小、第一条和最后一条记录



我在DB2v11上有一个非常大的事务表,我需要尽可能高效地查询其中的一个子集。我所需要的只是集合的总数(事先不知道,这是基于标准的,比如说1天(、第一条记录的ID和最后一条记录的ID。旧的代码获取整个表,然后只使用第一个记录ID、最后一个记录ID和大小,而不使用其余的。现在这个代码超时了。这是一个由多个联接组成的复杂查询。有没有一种方法可以在一个选择查询中获取集合、第一条记录、最后一条记录的大小?我读过为了获取第一条记录而重新排序列表(所以使用Desc获取,然后更改为Asc(是无效的。

示例表1 TRANSACTION_RECORDS:

tdID     TIMESTAMP        name 
-------------------------------
123      2020-03-31       john 
234      2020-03-31       dan  
456      2020-03-01       Eve  
675      2020-04-01       joy  

示例表2 TRANSACTION_TYPE:

invoiceId   tdID      account
------------------------------
897         123     abc  
898         123     def  
877         234     mnc  
899         456     opp  

样本查询

select Min(tr.transaction_id), Max(tr.transaction_id)
from TRANSACTION_RECORDS TR
join TRANSACTION_TYPE TT
on TR.tdID=tt.tdID      
WHERE Date(TR.TIMESTAMP) = '2020-03-31'       
group by tr.tdID
order by TR.tdID ASC

这会导致多个列,(但需要分组依据(

123,123  
234,234  
456,456  

我想要的是:

123,456  

正如我在评论中提到的,对于这个查询,您不需要Group BY,也不需要Order BY,只需执行:

select Min(tr.transaction_id), Max(tr.transaction_id)
from TRANSACTION_RECORDS TR
join TRANSACTION_TYPE TT
on TR.tdID=tt.tdID      
WHERE Date(TR.TIMESTAMP) = '2020-03-31' 

它应该按预期工作

相关内容

最新更新