8万多数据,分页查询就已经很慢了,求优化方案~~

代码如下:
public Page<Record> getPage(Integer pageNum , Map<String, String> map) {
	List<String> whereParams = new ArrayList<String>();
	String select = "SELECT tc.number ,tc.title , tc.time , tc.price , tc.income , tc.count,tc.id,tc.novelId  , tn.nName  " ;
	StringBuffer sBuffer = new StringBuffer(" FROM t_chapter tc ");
	sBuffer.append(" LEFT JOIN t_novel tn ON tc.novelId = tn.id "); 
	sBuffer.append(" WHERE 1=1 ");
	
	//筛选条件不为空时,追加筛选条件语句到sql中
	this.addEqualCondition(sBuffer, whereParams , "tn.id", map.get("novelId"));
	this.addLikeCondition(sBuffer,  whereParams ,"tn.nName", map.get("nName"));
	
	sBuffer.append(" ORDER BY tc.novelId , tc.number DESC ");
	return Db.paginate(pageNum, DicUtil.PAGE_SIZE, select, sBuffer.toString() , whereParams.toArray() ) ;
}


tc.novelId , tc.number 已创建索引


评论区

JFinal

2017-06-15 12:41

必须要用 explain + sql 去分析这个 sql 到底慢在哪里, 6 万多数根本不算多

rocker18

2017-06-15 14:12

我们几百万的日志也很慢···不知道该如何优化,数据库用的mysql···

nbjgl

2017-06-16 11:05

@JFinal 使用explain已解决。

JFinal

2017-06-16 11:53

@nbjgl 写个分享出来啊: jfinal.com/share

JFinal

2017-06-16 11:54

@rocker18 日志写数据库要用一个独立的库,不要与业务使用同一个库,写日志入库的时候先写到内存的缓存队列之中,然后用独立的线程定时批量写入库

热门反馈

扫码入社