sybase分页查询优化支持排序

本文介绍了一种在Sybase数据库中实现高效排序分页的方法,通过为排序字段添加索引并在程序中指定索引名来提升查询速度。文中提供了一个具体的测试案例,展示了不同页面加载时的效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上一篇( Sybase 海量数据分页瞬间完成)是不支持排序的,这次又写了一个支持排序的,不过要在数据库排序列加上索引,并在程序中指定索引名字。(注:sybase的jdbc API不是很智能不指定就没用使用索引搞的速度很慢)

带排序分页代码下载

测试代码如下:

 /**   * @param args   * @throws InterruptedException   */  public static void main(String[] args) throws InterruptedException {   StringBuilder sql = new StringBuilder("select t.keyId,t.pvcode" +     ",t.spType,t.factory,t.spareType,t.spareNum," +     "t.spareFuncNum,t.spareState,t.spareSerialNum,t.spareHardVersion,t.spareSoftVersion," +     "t.spareEnName,t.spareZhName,t.spareAddress " +     " from province_Spare_Info_ALL t where 1=1 order by factory");//   PagingService service = new PagingService();   int pageSize = 15;   int startNum = pageSize * 0;//第一页   //首次加载效率   long b = System.currentTimeMillis();   getPage(service ,sql.toString(),startNum,pageSize);   long e = System.currentTimeMillis();   System.out.println("首次加载时间"+(e-b));   Thread.currentThread().sleep(10000);//缓存5.5秒后可查询 我得电脑是4.7秒   //缓存之后效率   startNum = pageSize * 8000;//第8000页   b = System.currentTimeMillis();   getPage(service ,sql.toString(),startNum,pageSize);    e = System.currentTimeMillis();   System.out.println("翻到第8000时间"+(e-b));   

  startNum = pageSize * 40000;//第40000页   b = System.currentTimeMillis();   getPage(service ,sql.toString(),startNum,pageSize);    e = System.currentTimeMillis();   System.out.println("翻到第40000时间"+(e-b));  }  public static void getPage(PagingService service,String sql, int startNum, int pageSize ){   /*    * 我这里主键的索引是 province_pk_1    * factory 字段加的索引名叫province_index_1    * 如果就一个主键那写null就可以。如果几个索引那用哪个索引写哪个索引的名字    */   Page page = service.findPageBySql(sql, ProvinceSpareInfoAll.class, "keyId", startNum, pageSize,"province_index_1");//province_pk_1   List list = page.getData();   System.out.println(page.getTotalCount());   for (Object object : list) {    ProvinceSpareInfoAll p = (ProvinceSpareInfoAll)object;    System.out.print(p.getKeyId()+" ");   }   System.out.println();  }


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值