从包含 5 亿条记录的表中获取不同记录的最佳方法是什么?表结构为id1、id2、id3、upload_date。样本数据
id1 id2 id3 upload_date
1 ab cd 20240525
2 null gh 20240331
2 null gh 20240228
需要的结果
id1 id2 id3 upload_date
1 ab cd 20240525
2 null gh 20240331
除了 key id1 和 upload_date 之外,所有列都可以为 null。如果我因为 NULL 而使用 max(upload_date) 分组,则会出现重复。如果我对空列使用 nvl,那么我会错过空值,当我使用 select different id1, id2, id3 时,我不会得到所需的 max(upload_date) 。也许 row_numner(按 id1 按 upload_date desc 进行分区)作为 row_id 并从那里获取 row_id = 1 的所有内容?但对于 5 亿条记录来说还好吗?
如果我正确理解您的要求,一个简单的聚合查询就足够了:
SELECT id1, id2, id3, MAX(upload_date) AS upload_date
FROM yourTable
GROUP BY id1, id2, id3;