分页的核心思想
2013-03-06 17:37
267 查看
现在很多程序都会用到分页这个东西,究竟分页是什么东西呢?当我们需要提取大量数据的时候,不可能一次提取所有数据,而是先提取一部分显示给用户看,在用户需要的情况下提取剩下的数据。这个时候我们就可以用到分页了。
例如现在有100条数据,我们可以把它分成10页,每页10行。那么在提取数据的时候,我们就可以先提取第1~10行,当用户点击下一页的时候,提取第11~20行,以此类推......
要实现这种功能要怎么做呢?
首先我们需要写一段存储过程。指定两个变量,一个是页码PageIndex,一个是每页显示的行数RowCount,存储过程应该实现这样的功能:
首先查询前PageIndex*RowCount条数据,降序排列,再从查询结果中提取前RowCount条数据,再降序排列,这样就可以获取到当前页显示的数据了。
以MSSQL为例,SELECT TOP (RowCount) * FROM (SELECT * FROM (SELECT TOP(PageIndex*RowCount) * FROM Table order by ID) order by ID decs) order by ID desc,当然,这样的效率比较慢,需要进行三次查询三次排序,还有一种方法,不用TOP关键字,这样也可以兼容没有TOP关键字的数据库,例如Oracle。
对于没有TOP关键字的数据库,例如Oracle,我们可以这样,提取行号小于等于PageIndex*RowCount的数据(因为行号是从1开始的),然后再提取行号大于(PageIndex-1)*RowCount的数据。
SELECT * FROM ( SELECT * FROM Table WHERE rownum <= (PageIndex*RowCount) order by ID) WHERE rownum > ((PageIndex-1)*RowCount)
这样做就可以只用两次查询和一次排序。
归根结底,分页在存储过程,其实就是实现提取(页码*每页行数)条数据,然后再从中提取属于当前页面的数据。
如有不当请指点。>.<。
例如现在有100条数据,我们可以把它分成10页,每页10行。那么在提取数据的时候,我们就可以先提取第1~10行,当用户点击下一页的时候,提取第11~20行,以此类推......
要实现这种功能要怎么做呢?
首先我们需要写一段存储过程。指定两个变量,一个是页码PageIndex,一个是每页显示的行数RowCount,存储过程应该实现这样的功能:
首先查询前PageIndex*RowCount条数据,降序排列,再从查询结果中提取前RowCount条数据,再降序排列,这样就可以获取到当前页显示的数据了。
以MSSQL为例,SELECT TOP (RowCount) * FROM (SELECT * FROM (SELECT TOP(PageIndex*RowCount) * FROM Table order by ID) order by ID decs) order by ID desc,当然,这样的效率比较慢,需要进行三次查询三次排序,还有一种方法,不用TOP关键字,这样也可以兼容没有TOP关键字的数据库,例如Oracle。
对于没有TOP关键字的数据库,例如Oracle,我们可以这样,提取行号小于等于PageIndex*RowCount的数据(因为行号是从1开始的),然后再提取行号大于(PageIndex-1)*RowCount的数据。
SELECT * FROM ( SELECT * FROM Table WHERE rownum <= (PageIndex*RowCount) order by ID) WHERE rownum > ((PageIndex-1)*RowCount)
这样做就可以只用两次查询和一次排序。
归根结底,分页在存储过程,其实就是实现提取(页码*每页行数)条数据,然后再从中提取属于当前页面的数据。
如有不当请指点。>.<。
相关文章推荐
- 分页的核心思想
- 分页的核心思想
- ASP.NET MVC 数据分页思想及解决方案代码
- Spring IoC与AOP的核心思想
- C++核心思想(第三版) 读后感
- CGAL几何库 半边网格数据结构 模板类 设计核心思想
- MPEG-4视频编码核心思想及技术研究
- Hadoop的伪分布安装 hadoop的核心思想
- MPEG-4视频编码核心思想及技术研究
- 二叉树的遍历思想及核心代码实现
- Css规范整理:3.1、常规流布局:核心思想
- BOTC软件开发模型思想之核心代码区分——php示例005
- 面向对象核心思想
- Hibernate核心思想—ORM机制(二)
- 我对页面重构的核心思想的见解
- Java核心思想学习笔记001(Method Parameters)
- 算法核心思想总结及模板(不定期更新)
- 核心思想:创业者要做正确的决定,而非容易的决定(享受创业路上的孤单,你必须要有将自己关在小屋子里独自做重大且艰难决定的勇气)
- Java中的四个核心技术思想♣