我正在开发一个拥有大约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这样的大数据驱动公司如何在几秒钟内提供最新的帖子和推文
提前致谢
答案 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。