这里影响查询速度的三个方面:
    row_number() over(order by t.time desc)
    order by sorted_t.time desc
    select * from (select ..)    
排序.子查询对大数据量来时间影响比较大.

解决方案 »

  1.   

    dinya2003(OK) 谢谢的你的帮助。 
     我还想请问一下,那有什么办法来实现这个功能呢?
    谢谢
      

  2.   

    你的 time, username 上边是否有索引 如果有的话应该速度不慢。
      

  3.   

    (row_number() over(order by t.time desc)) as rownumber, (count(*) over()) as rowcount ????这个是什么意思?你想实现什么功能?能说详细一点吗?不过做排序的字段是要加上索引的
      

  4.   

    你可以先测试一下如果不做order by sorted_t.time desc耗时多少?
      

  5.   

    to:  yujiabian(流氓兔子雨) order by sorted_t.time desc 只是对10条记录排序应该不会影响大局。
    关键是这个 (row_number() over(order by t.time desc)) 排序会很费时。
    to :poyer (瑞德) 
    另外楼主的 oracle 版本是什么? 排序区设置是多少 如果在512K上的话应该不是很慢。
    关键是要在 time 上建立索引。 
    如果没有建先建索引:如下
    create index INDEX_userlog_time on userlog  (time);
    create index INDEX_userlog_username on userlog  (username);
    在进行分析
    analyze table testop compute statistics;
    analyze table testop compute statistics for all indexes;
    然后再查询:如果真如楼主所说
    其中WHERE 1=1后面还有可能有time, content, username等条件。
    有username ,time 条件正好可以使用索引。
    我想在1分钟内应该有结果的。