改良分页逻辑

先看一段代码
这是一段熟悉的不能在熟悉的分页逻辑
访问了两次数据库
public Page findPageBy(String hql, int pageNo, int pageSize, Object... params){
		int nPageNo = Math.max(1, pageNo); 
		int nPageSize = Math.max(1, pageSize); 
		int rowCount = (int)this.countRow("select count(*) " + removeSelect(hql), params);
		
		if(rowCount == 0){
			return new Page();
		}else{
			List rows = this.findBy(hql, Page.getStartOfPage(nPageNo, nPageSize), nPageSize, params);
			return new Page(nPageNo, rowCount, nPageSize, rows);
		}
	}


这样的效率在项目里面是难以接受的

可以采用冗余表或冗余字段的方式来改良

比如论坛中的帖子和回复,可以在主贴中添加一个冗余字段 post_num来解决

有些无法加字段的情况可以加一张表,缓存记录总数

这两种方式都能极大的改善程序的性能 ,当然前提条件是你的项目读远远大于写

你可能感兴趣的:(分页)