|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
先谈谈我对java的一些认识。我选择java,是因为他语法简单,功能强大,从web,到桌面,到嵌入式,无所不能。但当我进一步了解了java后,感叹,java原来也有许多缺点。server|sqlserver|分页
利用sql,和oracle数据库举行分页能够有以下三种办法!
上面让我们看一看假如我们要在数据库中取第1000条到第1010条的数据这两种办法是怎样完成的.
1.利用一时表的办法.(在体系中次要是间接写Sql语句来做)
a)按所需的排序体例排好序
b)创立一时表
c)从数据库里掏出第0条到第1010条的数据
d)把这些数据放进一时表中
e)把一时表再按与a)相反的排序体例排好序
f)然后只需把一时表中的前10条显时出来
g)烧毁一时表
2.利用object的办法
a)按所需的排序体例排好序
b)从数据库里掏出第0条到第1010条的数据
c)倒着从这1010条数据中取10条放进一个object中
d)把这个object里的纪录完整颠倒一下
e)把object里的数据显现出来
明显第二种办法优于第一种办法它削减了体系创立,烧毁一时表所需泯灭的资本,可是它们都有一个配合的缺点.那就是它们都要从数据库里掏出第0条到第1010条的数据如许就形成了查询出的纪录数很少,但收集传输数据量很年夜!
因而对照好的分页做法应当是:
每次翻页的时分只从数据库里检索页面巨细的块区的数据。如许固然每次翻页都必要查询数据库,但查询出的纪录数很少,收集传输数据量不年夜,假如利用毗连池更能够略过最耗时的创建数据库毗连历程。而在数据库端有各类成熟的优化手艺用于进步查询速率,比在使用服务器层做缓存无效多了。
关于SqlServer数据库如要到得第1000-1010笔记录:
Selecttop10*from(
Selecttop10*from(
Selecttop1010*fromdocdetailorderbylastmodidateasc,Idasc
)temptbl1orderbylastmodidatedesc,Iddesc
)temptbl2orderbylastmodidateasc,Idasc
关于oracle数据库如要到得第1000-1010笔记录因为oracle中的rownum是在查询以后排序之前赋值的.以是其响应的写法应为:
select*from(
selectmy_table.*,rownumastemptbl_rownumfrom(
Select*fromdocdetailorderbylastmodidateasc,Idasc
)temptblwhererownum<1010
)wheretemptbl_rownum>=1000
当以上的Sql语句实行完成今后,收集传输数据量就从之前的1010条削减到10条
经由过程以上分页体例的改动,对我们体系的功能有很年夜的提拔
我有个客户利用的是oracel数据库个中文档数量为12万条,当我们对这张表时行搜刮的时分利用第一种办法举行分页时,页面显现的工夫约为10秒摆布,而利用第三种办法而如今页面显现工夫只必要2-3秒摆布.
固然,大概另有更好的分页办法,总以为跟着数据库里的数据的不休增添,体系运转的速率将会变慢,我在这里贴出这篇文章,只是想和人人会商一下,另有没有更好的办法,但愿人人不惜复兴!一同会商!
:D(完)
轮性能微软曾做过一个例子,就是同一个项目用java和.net来作,结果开发周期,.net是java的一半,性能java是.net的十分之一,代码量java是.net的三倍。呵呵,这说明了什么,.net的全方位比java好。但是有的人说.net不能跨平台,这个问题我和我同学曾讨论过,都认为微软的.net很可能早都可以跨平台了,但是微软为了保护他们的操作系统,所以才没有推出跨平台的.net,只是推出了跨语言的.net, |
|