数据库分页 技术能够帮助浏览者更好的查看信息,不同数据库实现分页时的方法也各有不同。本文我们主要介绍几种不同数据库分页显示的实现方法以及高效率分页技术的三个方案,接下来我们就开始介绍。
不同数据库分页技术的实现代码:
1.:select * from ( select row_.*, rownum rownum_ from ( Query_SQL ) row_ where rownum =< max) where rownum_ >= min
2.:select top @pagesize * from tablename where id not in (select top @pagesize*(@page-1) id from tablename order by id) order by id
3.:select * from tablename limit position, counter
4.:select * from (select *,rownumber() as ROW_NEXT from tablename) where ROW_NEXT between min and max
高效率的分页技术三方案:
1.分页方案一:(利用Not In和SELECT TOP分页)效率次之
语句形式:
思路:先查询出待查询页之前的全部条数的id,查询ID不在这些ID中的指定数量条数。
2.分页方案二:(利用ID大于多少和SELECT TOP分页)效率最高
语句形式:

思路:先获得待查询页的之前全部条数id,获得它们当中最大的ID号,以此最大ID号为标志,查找比这个ID号大的指定条数。
3.分页方案三:
思路:先正排序查询出待查询页之前(包括当前页)的全部条数,然后将其倒排序,取指定条数。
关于不同数据库分页技术的实现方案以及高效率的分页技术三方案的介绍就到这里了,希望本次的介绍能够带给您一些收获,谢谢!
【编辑推荐】
如何实现高效的 jsp 分页显示功能(数据库是sqlserver),最好有实例;
用sql分页。 select top 10 from tablename where id not in (select top 10 id from tablename)一般的分页是一次性把数据库中数据全部取出来,在页面进行分页。 mssql 可以通过top关键字来实现查询的时候就只查显示的部分。
java&sql的分页怎么做?
public class UserPageDAO {DBManager dbManager = null;private int pageItem;//一页显示多少条数据private int pageRow;//当前是多少页private int DataCount;//一共多少条数据public UserPageDAO(){dbManager = new DBManager();}/* * pageItem设置一页显示多少行 */public UserPageDAO(int pageItem){ = pageItem;dbManager = new DBManager();}ArrayListarr = null; UserPageVO userPage = null; public ArrayList showPage(int pageRow){ try{ int page = * (pageRow - 1) ; String sql = select top + + id, name, password from page where id not in (select top + page + id from page ); ResultSet res = (sql); arr = new ArrayList(); while (()){ userPage = new UserPageVO(); ((id)); ((name)); ((password)); (userPage); } return arr; }catch(Exception e){ (); return null; } } /* * 返回一共有多少页 */ public int getPageCount(){ try{ String sql = select count(*) from page; ResultSet res = (sql); if (()){ = (1); //得到有多少条数据 }else{ = 0; } if ( % == 0 ){ return / ; }else{ return / + 1; } }catch(Exception e){ (); return 0; } } public int getDataCount() { return dataCount; } public void setDataCount(int dataCount) { = dataCount; } public int getPageItem() { return pageItem; } public void setPageItem(int pageItem) { = pageItem; } public int getPageRow() { return pageRow; } public void setPageRow(int pageRow) { = pageRow; } } 写一个分页类,再写一个方法传入当前页数
求struts+hibernate实现mysql分页的详细代码
分页不难 我分3段代码给你(dao 分页辅助业务类 Struts的Action 这写做完以后JSP里就可以随意使用了) 对于楼主没写过分页 要看的比较仔细 注释我也的不多 都是根据自己的思路写的 分页辅助类 ----------------------------- package biz; /*** 分页辅助类* @author Administrator**/ public class paghelp {private int rows;//数据库总记录数private int pagsize;//页大小private int currNO;//当前页private int nextNO;//下一页private int refNO;//上一页private int pagcount;//总共有多少页//计算出下一页第一条纪录在数据库中的行标public int getrow(){return (currNO-1)*pagsize;}public void Enum(int rows,int pagsize){=rows;=pagsize;();}//构造 把数据库的总纪录数 和 要一页显示多少条纪录 传来/*public paghelp(int rows,int pagsize){=rows;=pagsize;();}*//*public static void main(String[] args){paghelp p=new paghelp();(15, 5);(2);(());(());(());}*///计算总共有多少页public void Calepagecount(){if(rows % pagsize ==0){=rows / pagsize;}else{=rows / pagsize +1;}}public int getRows() {return rows;}public void setRows(int rows) { = rows;}public int getPagsize() {return pagsize;}public void setPagsize(int pagsize) { = pagsize;}public int getCurrNO() {return currNO;}//设置当前页public void setCurrNO(int currNO) {if(currNO > ){=;}else if( currNO < 1 ){ = 1;}else{=currNO;}}//设置下一页public int getNextNO() {if(currNO + 1 >){nextNO = ;}else{nextNO = currNO + 1;}return nextNO;}//设置上一页public int getRefNO() {if(currNO -1 <1){refNO =1;}else{refNO=currNO -1;}return refNO;}public paghelp(){}//返回总页数public int getPagcount() {return pagcount;}public void settPagcount(int pagcount) {=pagcount;} } dao ------------------------- /*** 分页提取数据库宠物信息(测试信息)* @param start 参数start 从数据库的哪个下标开始取(分页辅助类已经算好)* @param size 参数size 每次取多少个(可以是常量)* @return list宠物集合*/public List
发表评论