从oracle中一个非常庞大的数据库中获取最近的N条记录

时间:2014-06-05 12:12:49

标签: performance oracle

我正在开发一个拥有大约9000万条记录的超大型Oracle数据库。我想获得最近100条用于UI目的的记录。我试图使用模式中日期列的order by子句来实现这一点,即使我能够获得最近的记录,但处理需要大约20-25分钟。

E.g。架构

message_id varchar2,
message_head varchar2,
message_body varchar2,
----------
----------
message_date date

我使用message_date对最近的消息进行排序。

有没有人可以帮助我在更短的时间内(比如不到1分钟)提供最新的300条消息。我也想知道像facebook和twitter这样的大数据驱动公司如何在几秒钟内提供最新的帖子和推文

提前致谢

2 个答案:

答案 0 :(得分:1)

1)在message_date上创建索引
2)添加一个序列列(也被索引)并使用该列检索最后的X个记录

请注意,如果您正在使用' live'最后X条记录一直在变化的数据库。

答案 1 :(得分:0)

另一种方法,甚至可能是互补的......

对FIRST N ROWS使用优化程序模式提示。这将指示优化器优化以快速检索第一个记录。

SELECT / * + FIRST_ROWS(10)* / employee_id,last_name,salary,job_id 来自员工 在哪里department_id = 20;

将优化以检索10个第一行。你应该做100。