欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

oracle分页查询慢解决思路

更新时间: 2014-01-05 02:13:52 责任编辑: Author_N1

 

oracle分页查询慢
一张新闻表,有100多万条记录
用下列分页查询
select a2* 
from (select rownum rsn,a1.* 
       from ( select id,title,sort,updt 
              from news 
              where sort = 1111 
              order by updt desc) a1
     ) a2
where a2.rsn < 10

sort updt 都创建了索引
查询这个表每次要8秒左右,是什么原因?

--参考方法--
sort updt 都创建了索引,id,title建索引了么
--参考方法--
换成<=,然后排序是否可以放外面或者不要
--参考方法--
引用:
主要用于 第2页等,

select a2* 
from (select rownum rsn,a1.* 
       from ( select id,title,sort,updt 
              from news 
              where sort = 1111 
              order by updt desc) a1
     ) a2
where a2.rsn > 10 and a2.rsn < 20



Quote: 引用:

你这语句写的。。。嵌套写的有何用。
试试

select a1.* 
       from ( select id,title,sort,updt 
              from news 
              where sort = 1111 
              order by updt desc) a1 where rownum <10


第二页也不该这样写,效率很慢
你那种方法是把> 和<都放最外面。你试试这个


select a1.*
       from ( select id,title,sort,updt ,rownum rn
              from news 
              where sort = 1111
              and rownum<20
              order by updt desc) a1 where rn>=10

--参考方法--
楼主现在里面筛选一层。这个sql通用(嵌套)!

select a2.*
  from (select rownum rsn, a1.*
          from (select  id,title,sort,updt 
                  from base_student
                  where sort = 1111
                 order by updt desc) a1
         where rownum <= 20) a2
 where a2.rsn > 10

--参考方法--
索引加载sort上就行啊,这个才是条件
--参考方法--
索引加载 sort 上,然后

SELECT a2.* 
FROM (
      SELECT id,title,sort,updt, to_number() orver (ORDER BY updt DESC) rsn
      FROM news
      WHERE sort = 1111 
     ) a2
WHERE a2.rsn > 10 AND a2.rsn < 20
--参考方法--
用分区表试试,比索引管用
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:13:52
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/7242/
本文WWW.DOC100.NET DOC100.NET版权所有。