`

Sybase数据库中的高效分页方法

阅读更多
前段时间发博,Sybase使用rank() over(order by id)ret的方式分页,这种方式在数据量达到40W条的时候很耗时,大概5S的时间,当达到千万条的时候,查询一次大概是1分40秒,这就远远不符合项目要求了

对于这种方式,瓶颈可能是出在排序部分,当排序的唯一字段是varchar类型的时候更加明显


现在有种新的方式,就是利用rowid。
如:select a.*  from table_name a where rowid(a) >=1 and  rowid(a)<11

经测试,在同一张表中,1500W的数据量,每次查询时间都在200ms以内
但是这个函数只能用在真实的数据表,无法在临时表中用到;

这个rowid,是在数据插入的时候,数据库给每行数据分配的物理唯一标识,如果要页面中要用到动态排序,这个是不支持的。
3
1
分享到:
评论
5 楼 yalishizhude 2013-06-04  
pkptzx 写道
yalishizhude 写道
楼主你太给力了,比top好用多了,很快

???为什么我用不了?提示没有rowid啊...额...

你的是sybase IQ吗?记住一定要给表 取个别名
4 楼 pkptzx 2013-01-08  
yalishizhude 写道
楼主你太给力了,比top好用多了,很快

???为什么我用不了?提示没有rowid啊...额...
3 楼 yalishizhude 2012-06-28  
楼主你太给力了,比top好用多了,很快
2 楼 无双Rama 2011-07-01  
chenshao8818 写道
不支持排序的分页,有意义吗?

对于某些应用来说有意义,比如我的数据插入的时候就是排好序的
还有就是用户只是查询,并没有想依据某个字段来排序,那这个就刚刚好
1 楼 chenshao8818 2011-06-28  
不支持排序的分页,有意义吗?

相关推荐

Global site tag (gtag.js) - Google Analytics