(500)求1000万条记录的高效分页,各种方法均可,在jsp环境下?(表如下)给个例子!!!!(急等)

zhangsq 2003-05-06 10:01:17
creat table PEOPLE(
NAME VARCHAR2(30) not null,
ADDRESS VARCHAR2(50) not null,
TEL VARCHAR2(30) not null,
FAX VARCHAR2(30) not null,
EMAIL VARCHAR2(50) not null,
constraint PK_PEOPLE primary key (NAME)
)
能否把分页的速度提高到5秒之内
在查询时要使用order by 主键或其他字段!!
请具体写一下?

一旦可以决不食言?
我的信箱:zsq666@263.net
不胜感激!
...全文
36 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
whoareu 2003-05-15
  • 打赏
  • 举报
回复
我用的 xieha(9527到!) 方法jsp连oracle分页,20万条记录,
跳转到任意页也就2秒-5秒左右的时间。
一千万条记录没概念
qsbqing 2003-05-14
  • 打赏
  • 举报
回复
我只處理過10萬以上的記錄,速度還可以,離1000萬還差得遠呢.
qizi168 2003-05-13
  • 打赏
  • 举报
回复
楼上 tuidler() 的网站很好!谢了!
bzszp 2003-05-12
  • 打赏
  • 举报
回复
哈哈
一瓢兄有口难辩啊,同情......
:)
******************************
"任弱水三千,我只取一瓢饮"
penitent 2003-05-12
  • 打赏
  • 举报
回复
lynx1111(任我行)
胡扯!
tuidler 2003-05-10
  • 打赏
  • 举报
回复
看看这个:
http://www.cnoug.org/bin/ut/threaded_show.cgi?tid=38&pid=77

http://www.cnoug.org/bin/ut/topic_show.cgi?id=192&h=1#1972

lynx1111 2003-05-10
  • 打赏
  • 举报
回复
KingSunSha(弱水三千) ( )
penitent(只取一瓢) ( )
是一个人的账号吗? 要不就是热恋中的一对!
aaxu 2003-05-10
  • 打赏
  • 举报
回复
up
zhangsq 2003-05-09
  • 打赏
  • 举报
回复
up
zhangsq 2003-05-09
  • 打赏
  • 举报
回复
谢谢各位:
在大家的帮助下,分页速度总算有不少的提高,我用的是表分区的方法!
我想对表分区的方法再优化后还可以提高分页速度,布置那位高手告诉我如何注意表分区
的细节和参数设置,更能提高分页显示的速度!

等高手回音!
zhongjian 2003-05-09
  • 打赏
  • 举报
回复
各位朋友,小弟近日正在学习oracle,由于授课教师水平很戳,所以学习没有多大进展,本人想请各位朋友帮我找一些oracle的电子文档或幻灯片,以助我学习提高,小弟感激不尽.来信请发:
zhongjian_lee@yahoo.com
superzuoluo 2003-05-07
  • 打赏
  • 举报
回复
用rownum
yqqqing 2003-05-07
  • 打赏
  • 举报
回复
回复人: penitent(只取一瓢) ( ) 信誉:105 2003-05-06 22:29:00 得分:0


不知道你收到我的回信没有?
给你说过了,分区表不是在所有的情况下是管用的,也不是在所有的情况下都能提高速度,对于你的这种情况,如果还是全表扫描,用分区表是白用。
对于大型记录集,不知道你作分页还有什么意义,想想看,几万页,谁来看???
你的语句是没有问题的,而且已经没有办法再优化。
所以,我的建议是,查询上加条件,你可以采用如下思路。
假定有200,000记录,你应该先取前10,000个记录出来
用name<条件来限制。当用户翻页的时候,只要没有翻出这个范围,你都可以用这10,000条记录来作翻页。当用户跳到另外一个范围时,你则取那个范围上的10,000条记录。
也就是说,不管你的数据库有多少条记录,但是你只选出特定的记录数来分页。

你该用过google吧,看看人家的思路,为什么那么快!

==================================================================================

好方法,同意。
煜知搬砖者 2003-05-06
  • 打赏
  • 举报
回复
忘了,如果是全局排序,则:
select name,address from
(
select name,address,rownum mynum from
(
select name,address
from tb
where ...
order by ...
)
)
where mynum between 1 and 5

我的方法很笨,呵呵!
煜知搬砖者 2003-05-06
  • 打赏
  • 举报
回复
原来一个B/S系统用到的
select name,address from
(
select name,address rownum mynum
from tb
where ...
order by ...
)
where mynum between 1 and 5

注:每页显示5条记录,只写了两个字段
nicholaz 2003-05-06
  • 打赏
  • 举报
回复
你可以按照一定的条件将表中的数据分到几个表中去,查询的时候

按照不同的条件查询不同的表。
penitent 2003-05-06
  • 打赏
  • 举报
回复
有什么问题再发mail给我,或直接把我加入到你的好友中。

不要告诉我你不会用msn
penitent 2003-05-06
  • 打赏
  • 举报
回复
不知道你收到我的回信没有?
给你说过了,分区表不是在所有的情况下是管用的,也不是在所有的情况下都能提高速度,对于你的这种情况,如果还是全表扫描,用分区表是白用。
对于大型记录集,不知道你作分页还有什么意义,想想看,几万页,谁来看???
你的语句是没有问题的,而且已经没有办法再优化。
所以,我的建议是,查询上加条件,你可以采用如下思路。
假定有200,000记录,你应该先取前10,000个记录出来
用name<条件来限制。当用户翻页的时候,只要没有翻出这个范围,你都可以用这10,000条记录来作翻页。当用户跳到另外一个范围时,你则取那个范围上的10,000条记录。
也就是说,不管你的数据库有多少条记录,但是你只选出特定的记录数来分页。

你该用过google吧,看看人家的思路,为什么那么快!



zhangsq 2003-05-06
  • 打赏
  • 举报
回复
我相信一定有解决的办法!!!!!

等等、、等!!!
KingSunSha 2003-05-06
  • 打赏
  • 举报
回复
如果不给出适当的where条件,order by操作会占用大量的时间,而这一点用分区表是没有用的。

你的查询通常会返回多少纪录(分页前)?
加载更多回复(2)

3,499

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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