1、oracle分页sql
数据量很大的查询一定要加分页,否则严重的话甚至会导致数据库直接挂了
public String getPageSql(String originalSql,int pageIdx){ int startRow = (pageIdx - 1) * 10 + 1; int endRow = pageIdx * 10; StringBuffer pagingSelect = new StringBuffer(2560); pagingSelect.append("select * from ( select T.*, rownum rownum_ from ( "); pagingSelect.append(originalSql); pagingSelect.append(" ) T ) where rownum_ <= ").append(endRow).append(" and rownum_ >= ").append(startRow); return pagingSelect.toString(); } |
2、rownum和rowid的区别
rownum和rowid都是伪列,但是两者的根本是不同的。 rownum是根据sql查询出的结果给每行分配一个逻辑编号,所以你的sql不同也就会导致最终rownum不同, 直接用rownum查找的范围必须要包含1;因为rownum是从1开始记录的,当然你可以把rownum查出来后放在一个虚表中作为这个虚表的字段再根据条件查询 但是rowid是物理结构上的,在每条记录insert到数据库中时,都会有一个唯一的物理记录 。 |
3、mysql实现分页
select * from table limit (pageNo-1)*pageSize,pageSize; |