ORACLE 分页 (2008-09-19 10:45:56) 标签:杂谈 ORACLE 大数据量下的分页解决方法 一般用截取ID 方法,还有是三层嵌套方法. 一种分页方法 : <% int i=1; int numPages=14; String pages = request.getParameter("page") ; int currentPage = 1; currentPage=(pages==null)?(1):{Integer.parseInt(pages)} sql = "select count(*) from tables"; ResultSet rs = DBLink.executeQuery(sql) ; while(rs.next()) i = rs.getInt(1) ; int intPageCount=1; intPageCount=(i%numPages==0)?(i/numPages):(i/numPages+1); int nextPage ; int upPage; nextPage = currentPage+1; if (nextPage>=intPageCount) nextPage=intPageCount; upPage = currentPage-1; if (upPage<=1) upPage=1; rs.close(); sql="select * from tables"; rs=DBLink.executeQuery(sql); i=0; while((i
//输出内容 //输出翻页连接 合计:<%=currentPage%>/<%=intPageCount%>第一页上一页 <% for(int j=1;j<=intPageCount;j++){ if(currentPage!=j){ %> [<%=j%>] <% }else{ out.println(j); } } %> 下一页最后页 ------------------------------------------------- (一)分页实现及性能 Oracle 的分页查询语句基本上可以按照本文给出的格式来进行套用。 分页查询格式: SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A WHERE ROWNUM <= 40 ) WHERE RN >= 21 其中最内层的查询SELECT * FROM TABLE_NAME 表示不进行翻页的原始查询语句。ROWNUM <= 40和 RN >= 21控制分页查询的每页的范围。 上面给出的这个分页查询语句,在大多数情况拥有较高的效率。分页的目的就是控制输出结果集大小,将结果尽快的返回。在上面的分页查询语句中,这种考虑主要体现在WHERE ROWNUM <= 40这句上。 选择第21 到 40条记录存在两种方法,一种是上面例子中展示的在查询的第二层通过ROWNUM <= 40来控制最大值,在查询的最外层控制最小值。而另一种方式是去掉查询第二层的W...