高手请进:200万的数据如何 【快速5s】 按特定的列排序后 取出前100条??

jinsenhome 2015-05-07 10:02:49
订单表 ,按订单日进行分区,每天一个分区;
某个商户的订单每个季度共90天,不均匀的分布在订单表(不同的分区内)内,每日(或分区)从几个到几十万个随机分布
现有程序写死的框架,直接从订单表内【按日期先后顺序】查询出订单,【每100条一页】,每次翻页给出商户号、最新的订单日期,然后重新查询出100条。

有没有办法快速取出每页的100条????

现有程序sql原型如:

select *
from (
select * from tab where cust_id='????' and dtdate<'yyyy-mm-dd hh:mi:ss' order by dtdate desc,otherfield
) t
where rownum<101
...全文
239 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
jinsenhome 2015-05-08
  • 打赏
  • 举报
回复
不是。 是连续的取 100 条。而且必须使用视图作为查询的 来源。查询视图可以传递的 where条件 只有 客户号 和 订单日期! 原因是“一套现成广泛应用的程序框架”,不能改动程序,只能想办法优化视图。 已知的难点就是:排序!消耗了大量时间,数据access并不是主要的地方。
zhk383501372 2015-05-08
  • 打赏
  • 举报
回复
to_date(dtdate,'YYYY-MM-DD')=to_date(sysdate,'YYYY-MM-DD')-1 to_date(dtdate,'YYYY-MM-DD')=to_date(sysdate,'YYYY-MM-DD')-2 ... to_date(dtdate,'YYYY-MM-DD')=to_date(sysdate,'YYYY-MM-DD')-n N用页面值判断传入
zhk383501372 2015-05-08
  • 打赏
  • 举报
回复
你的意思是说,假如第一页取今天前100个,第二也去昨天前100个,第三天取前天100个?

17,075

社区成员

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

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