无论是在DRP或寻呼在面试问题调查看到查询分页查询的代码实现的,它给了我一个提示:分页查询是很重要的,在数据量大,必须考虑。它没有花时间停下来总结在这里。现在我们看的分页查询Oracle数据库中的视频内容,发现它很容易理解。

1。分页算法

首先,当我在互联网上寻找信息,我看到很多的页面内容,我感到很困惑。这是不可能的。互联网上的信息是一样的。问题是在我自己的地方。我不明白分页的前提条件是什么。我们都知道,只要有分页,这些变量将涉及多少页/页,当前页大小(pagenow),总记录数(totalrecords),总页码(总页数),起始页(beginrow),结束页(endrow)。这些数据分页算法在互联网上是有用的页大小。他们是有用的beginpage,但也有用的末..事实上,这些变量需要分类:我把它们分为三类。

A.需要从数据库中查询:totalrecords。select count(*)从tablename

最基本的B.需要由用户提供:PageSize和pagenow。(个人认为这是分页算法的前提)

C.从其他变量计算:总页数,beginrow和endrow ..我们需要计算,因为beginrow endrow分页查询需要使用,和总页数,页面需要提供的信息。具体计算公式:




总页数:如果((totalrecords % PageSize)= = 0){
总页数= totalrecords /大小;
{人}
总页数= totalrecords / PageSize + 1;
}
BeginRow:(pagenow-1)*为+ 1
EndRow:pagenow * PageSize


因此,这些变量的值可以得到。请看2和3部分如何使用它。

2中常用的分页方法

事实上,无论是Oracle或SQL Server,实现分页查询的基础是子查询。在我自己的话:选择在选择集。

有三种类型的oracle分页。我只谈一个很容易理解的。把员工名单(EMP)作为一个例子,假设有10的记录,现在要求每5页分页记录,与当前页2。,并记录6-10。让我们以一个具体的数做它,然后把它变成一个变量。

Oracle实现第一步:选择A *,rownum rn从(SELECT * FROM EMP)一个;rownum是在Oracle的行数内分布,SELECT * FROM EMP括号中是查询全部记录在EMP表。然后进一步查询的查询结果视图。外部选择添加行号除了所有EMP查询,以便以后查询使用。

Oracle实现第二步骤:选择A *,rownum rn从(SELECT * FROM EMP)一个rownum = 6,不解决问题。Oracle内部机制不支持这种写作风格。

Oracle实现第三步:SELECT * FROM(选择A *,rownum rn从(SELECT * FROM EMP),选择,等等,这样我们就可以完成6-10查询。

去年,u3002we转换为变量,它可以在java程序或PL / SQL。

三个转变是必要的:电磁脉冲的位置是具体的表名,6的位置(pagenow-1)*为+ 1,和10的位置pagenow * PageSize。

这种方法可以作为一个模板,它是修改非常方便。所有的变化,只需要改变的最内层。例如,查询指定的列:修改最内层查询雇员,萨尔从EMP;根据薪酬等级排名:选择姓名,萨尔从EMP的顺序,从,只需要修改的最内层。

在3.sqlserver普通寻呼的方法

我们还用一个员工表例说明SQLServer实现分页

第一次使用顶部:

SQLServer实现第一步:选择前10 *由工号EMP秩序;在员工ID升序排列,前10的记录了。

SQLServer实现第二步:选择前5 *(由工号EMP顺序选择前10 *)。10记录在员工数量降序采取然后5记录了这里的第一顺序是升序和降序排列,其次是巧妙的,有不知道最高可以做到这一点。10的位置是由可变pagenow * PageSize和5被PageSize取代。

使用第二种顶部和:

选择前5 * EMP,工号在(选择前10工号,工号),10位是由可变**而不是5。

其他查询都是一样的,没有更多的细节。

以上是两个数据库实现分页功能的案例,希望能对大家有所帮助。