折雨的天空

博客介绍:本博客当前共有文章【968】篇,总阅读量【5,159,204】次,第一篇博客发表于【2011年04月06日 10时34分】,距今已【4978】天,感谢您的使用!

您的位置:折雨的天空 >其他技术> oracle分页查询缓慢的情况

oracle分页查询缓慢的情况

这是延续很久的问题了


项目使用的Oracle,一百多万数据,分页显示10条,高配服务器显示首页都要10秒以上,配置差的服务器要好几十秒,实在无法忍受,还不如


mysql的速度


前前后后多次想对这个进行优化,但是好几次都是研究了半天没有一点进展


昨天和今天通过sql developer (不要笑话我不用PL/SQL)的解释计划,看到查询使用了全表扫描


之前一直认为是使用了like的原因


在我自己的知识库里,我只知道like 关键字开头不以通配符开始,是可以使用索引的


但是现实就是我没以通配符开始,也没使用索引


然后我又给另外一个条件建立索引,还是不行


把外在分页的那些语句去掉,还是没使用索引


把左连接去掉,仍然没使用索引


都绝望了的时候


把order by删掉,瞬间奇迹就来了


原来查询要12秒以上的,马上变成0.078秒了


这不是问题么


于是马上又去找,oracle order by查询缓慢的原因


找了很多,很多人给的解决办法就是建索引,走索引


但是这个怎么操作就不是很详细了


好吧,那还是就走索引嘛,要让order by后面的走索引,单独给order by后面的字段创建了索引,但是查询也没用啊,还是依然的慢


又想到有个网友说了,order by后面跟主键


好吧,我这个不可能跟主键啊,我试着跟了一下主键在后面


查询确实快了,但是这个查询的结果不是我想要的


怎么办呢


主键吧,就是唯一索引,是吧


那么如果我创建一个符合索引,把order by后面的字段和主键一起创建复合索引怎样?


试了下,哈哈,很高兴成功了。


查询从12秒变0.0几秒了,快了几百倍吧。


至此问题结束,


那么怎么解决的呢


还是就是给order by 后面的字段创建索引,创建的是含有主键的复合索引


另外count语句慢的时候,在count里加一个where 条件的字段,效果也很好。

------------正 文 已 结 束, 感 谢 您 的 阅 读 (折雨的天空)--------------------

转载请注明本文标题和链接:《oracle分页查询缓慢的情况

奖励一下

取消

分享不易,烦请有多多打赏,如您也困难,点击右边关闭即可!

扫码支持
扫码打赏,5元,10元,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

-秒后自动关闭,如已打赏,或者不愿打赏,请点击右上角关闭图标。

发表评论

路人甲 表情
看不清楚?点图切换