一尘不染

限制Oracle中SQL查询返回的记录

sql

我负责处理的应用程序之一是每隔x秒检查一次Oracle DB表,以查看是否有新数据要处理(其他实时应用程序正在填充该数据)。

我们新的客户业务流程迫使我们的实时性在同一时间(比如说10000)同时每天填充几次记录来填充该表。下次我的应用程序检查是否有任何要处理的内容时,遇到10
000条记录并尝试对其进行处理。

它的设计不是很好,而且扩展性还不够好。快速解决方案是限制该应用程序从Oracle获取的记录数量,下次它将再选择50条(或任何其他内容),依此类推。

如何在Oracle SQL中限制返回记录的数量?订单很重要!

  select * 
    from cool_table where date >= to_date('200901010000', 'YYYYMMDDhh24mi') 
order by seq_nr, entry_dts;

阅读 195

收藏
2021-03-10

共1个答案

一尘不染

select * from
(select c.* from cool_table c
   where date >= to_date('200901010000', 'YYYYMMDDhh24mi') 
   order by seq_nr, entry_dts)
where rownum < 50

您需要确保在行数过滤之前完成排序(否则将使用找到的前50行,然后对它们进行排序)

2021-03-10