oracle千万级数据 分页查询 如何优化

youzhi1225 2016-08-10 09:48:46
最近在做一个项目,日志数据库有将近5百万,需求为带条件,分页查询
传统的分页SQL语句,查询将近10s左右,如何优化
...全文
1913 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnwz 2016-08-18
  • 打赏
  • 举报
回复
时间作为必选条件(缺省值用最常用的,比如最近5分钟、1小时等等),同时考虑结合分区(按月)情况限制可查询时间的长度(比如1个月、2个月或者1年等),用户如果一定要放到很宽,那也只能慢了。 索引时间在第一字段,其他的模糊查询索引很难用的起来
jdsnhan 2016-08-11
  • 打赏
  • 举报
回复
这个是要匹配业务的。 依据时间做分区,查询条件里默认匹配时间区间。 预判查询结果量,太大时,前台或者提醒,或者禁止。
js14982 2016-08-10
  • 打赏
  • 举报
回复
给他们一个默认时间,让他们强制用时间查,这样走分区表
youzhi1225 2016-08-10
  • 打赏
  • 举报
回复
没有,时间是不定的,可以输入任何时间段
卖水果的net 2016-08-10
  • 打赏
  • 举报
回复
引用 6 楼 youzhi1225 的回复:
所有的字段 name,type,object,time,desc,result,ip 模糊查询
有时间区间的条件吗?如果没有的话,这个估计,就不好优化了;建立了索引也用不动的;
youzhi1225 2016-08-10
  • 打赏
  • 举报
回复
所有的字段 name,type,object,time,desc,result,ip 模糊查询
卖水果的net 2016-08-10
  • 打赏
  • 举报
回复
你的查询条件,是什么呢 ?
youzhi1225 2016-08-10
  • 打赏
  • 举报
回复
select * from( select a.*,rownum r from( select name,type,object,time,desc,result,ip from log) <where> 查询语句 <where> order by time desc) a where rownum <#{end} ) where r>#{begin} 分区是按time 每月分区
ghx287524027 2016-08-10
  • 打赏
  • 举报
回复
方便贴出你的分区情况和查询语句吗?
youzhi1225 2016-08-10
  • 打赏
  • 举报
回复
已经根据入库时间创建了分区,但由于条件太多,所以,创建分区之后,效果不是很大
卖水果的net 2016-08-10
  • 打赏
  • 举报
回复
可以根据常见的条件,做分区表;

17,075

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧