如何检索每个类别的最后一条记录(更快的方式)

亚瑟

我使用 Oracle 作为 DBMS 并且有一个大表(400,000,000 条记录)。现在,我想检索每个类别的最后一条记录。当我使用如下所示的“group by”时,需要很长时间。有没有更快的方法?

注意:我需要检索所有表的数据:

select * 
from myTable tb1
inner join 
    (select MAX(id) max_id, categoryColumn 
     from myTable 
     group by categoryColumn) tb2 on tb1.id = tb2.max_id
戈登·利诺夫

您可以尝试窗口函数:

select t.*
from (select t.*, 
             row_number() over (partition by categoryColumn order by id desc) as seqnum
      from mytable t
     ) t
where seqnum = 1;

我会推荐一个关于(categoryColumn, id desc).

使用此索引,您可能会发现相关子查询更快:

select t.*
from mytable t
where t.id = (select max(t2.id)
              from mytable t2
              where t2.categoryColumn = t.categoryColumn
             );

虽然我认为上面的速度更快,但我使用keep. 语法比较繁琐:

select categoryColumn, max(id) as id,
       max(col1) keep (dense_rank first order by id desc) as col1,
       max(col2) keep (dense_rank first order by id desc) as col2,
       . . .  -- and so on for each column
from mytable t
group by categoryColumn;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何检索每个对话的最后一条消息?

来自分类Dev

如何选择每个ID的最后一条记录

来自分类Dev

仅检索每个实体的最后一条记录,而不是所有记录

来自分类Dev

MySQL快速检索每个组中的最后一条记录

来自分类Dev

如何通过获取每个组中的最后一条记录来删除重复的记录

来自分类Dev

分组mysql表时检索最后一条记录

来自分类Dev

分组mysql表时检索最后一条记录

来自分类Dev

检索sqlite数据库的最后一条记录

来自分类Dev

选择每个人的最后一条记录

来自分类Dev

为每个ID选择每月的最后一条记录

来自分类Dev

获取每个不同ID的最后一条记录

来自分类Dev

检索每组的第一条和最后一条记录

来自分类Dev

Postgresql - 如何从每个月的最后一条记录中获取价值

来自分类Dev

如何在Oracle SQL中检索相同日期的组中的第一条记录和最后一条记录

来自分类Dev

如何获取日期中的第一条记录和最后一条记录

来自分类Dev

如何获取组之间的第一条记录和最后一条记录?

来自分类Dev

sql查询不检索所有记录只检索最后一条记录

来自分类Dev

如何检索每个类别的一个随机行?

来自分类Dev

如何查找组中的最后一条记录

来自分类Dev

如何捕获文件中的最后一条记录

来自分类Dev

如何从sql server中获取最后一条记录?

来自分类Dev

如何使用分组依据获取最后一条记录

来自分类Dev

如何打印SQL Server的最后一条记录

来自分类Dev

SQLite:如何获取最后一条记录?

来自分类Dev

R-检查每个ID /循环每天的第一条和最后一条记录

来自分类Dev

确定Excel中每个日期的第一条和最后一条合格记录

来自分类Dev

MySQL JOIN最后一条记录

来自分类Dev

读取文件的最后一条记录

来自分类Dev

查看每组的最后一条记录

Related 相关文章

  1. 1

    如何检索每个对话的最后一条消息?

  2. 2

    如何选择每个ID的最后一条记录

  3. 3

    仅检索每个实体的最后一条记录,而不是所有记录

  4. 4

    MySQL快速检索每个组中的最后一条记录

  5. 5

    如何通过获取每个组中的最后一条记录来删除重复的记录

  6. 6

    分组mysql表时检索最后一条记录

  7. 7

    分组mysql表时检索最后一条记录

  8. 8

    检索sqlite数据库的最后一条记录

  9. 9

    选择每个人的最后一条记录

  10. 10

    为每个ID选择每月的最后一条记录

  11. 11

    获取每个不同ID的最后一条记录

  12. 12

    检索每组的第一条和最后一条记录

  13. 13

    Postgresql - 如何从每个月的最后一条记录中获取价值

  14. 14

    如何在Oracle SQL中检索相同日期的组中的第一条记录和最后一条记录

  15. 15

    如何获取日期中的第一条记录和最后一条记录

  16. 16

    如何获取组之间的第一条记录和最后一条记录?

  17. 17

    sql查询不检索所有记录只检索最后一条记录

  18. 18

    如何检索每个类别的一个随机行?

  19. 19

    如何查找组中的最后一条记录

  20. 20

    如何捕获文件中的最后一条记录

  21. 21

    如何从sql server中获取最后一条记录?

  22. 22

    如何使用分组依据获取最后一条记录

  23. 23

    如何打印SQL Server的最后一条记录

  24. 24

    SQLite:如何获取最后一条记录?

  25. 25

    R-检查每个ID /循环每天的第一条和最后一条记录

  26. 26

    确定Excel中每个日期的第一条和最后一条合格记录

  27. 27

    MySQL JOIN最后一条记录

  28. 28

    读取文件的最后一条记录

  29. 29

    查看每组的最后一条记录

热门标签

归档