如题,场景应该很常见,就是有张表a,id自动增长,还有一字段是记录的插入时间,当然还有很多其它字段,现在需要将查询结果按id或插入时间(实际是一个效果)倒序排列显示,就是把最新添加的数据显示在最前。目前表的数据有5000多万,每天增加20多万。查询条件的字段已经建了索引,但是加了 order by id desc 或者order by createdt desc后就很慢,已经用/*+first_rows*/ 了。请问一般是如何解决的?是否采用倒序索引?
select /*+first_rows*/ * from (select a.*,rownum as num from (select * from a where field1=231312 order by id desc ) a where rownum<16 ) b where num>0
field1已经有索引。
题目不是说了:将查询结果按id或插入时间(实际是一个效果)倒序排列显示
这么多数据?我觉得应该建一个history表吧,过一段时间就把数据移过去。一般都是报表才需要所有的历史数据。而报表的话慢一点还是能接受的啦~~~