一、MySQL 数据库 分页查询
MySQL数据库实现分页比较简单,提供了 LIMIT函数。
LIMIT子 句可以用来限制由SELECT语句返回过来的数据数量,它有一个或两个参数,如果给出两个参数, 第一个参数指定返回的第一行在所有数据中的位置,从0开始(注意不是1),第二个参数指定最多返回行数。
select * from table WHERE … LIMIT 10; #返回前10行
select * from table WHERE … LIMIT 0,10; #返回前10行
select * from table WHERE … LIMIT 10,20; #返回第10-20行数据
二、SQLServer数 据库分页查询
SQLServer数据库又分为 SQLServer2000和SQLServer2005。一般比较简单的方法是通过TOP函数来实现。如下:
SELECT TOP 10 * FROM sql WHERE (
code NOT IN (SELECT TOP 20 code FROM TestTable ORDER BY id))
ORDER BY I
这条语句,从理论上讲,整条语句的执行时间应该比子句的执行时 间长,但事实相反。因为,子句执行后返回的是20条记录,而整条语句仅返回10条语句,所以影响数据库响应时间最大的因素是物理I/O操作。而限制物理I /O操作此处的最有效方法之一就是使用TOP关键词了。TOP关键词是SQL SERVER中经过系统优化过的一个用来提取前几条或前几个百分比数据的词。
以上语句的有一个致命的缺点,就是它含有NOT IN字样,要换成用not exists来代替not in,二者的执行效率实际上是没有区别的。
在以上分页算法中,影响我们查 询速度的关键因素有两点:TOP和NOT IN。TOP可以提高我们的查询速度,而NOT IN会减慢我们的查询速度,所以要提高我们整个分页算法的速度,就要彻底改造NOT IN,同其他方法来替代它。
我们知道,几乎任何字段,我们都可以通过max(字段)或min(字段)来提取某个字段中的最大 或最小值,所以如果这个字段不重复,那么就可以利用这些不重复的字段的max或min作为分水岭,使其成为分页算法中分开每页的参照物。在这里,我们可以 用操作符“>”或“<”号来完成这个使命。如:
Select top 10 * from table1 where id>200
于是就有了如下分页方案:
select top 页大小 *from table1
where id>(select max (id) from
(select top ((页码-1)*页大小) id from table1 order by id) as T) order by id
使用TOP要求主键必须唯一,不能是联合主键。如果是联合主键,则查询出的结果会乱序的。
目前SQLServer2005提供了一个row_number()函数。ROW_NUMBER() 就是生成一个顺序的行号,而他生成顺序的标准,就是后面紧跟的OVER(ORDER BY ReportID),其中ReportID可 以是联合主键。下面,我们看看怎么具体应用这个RowNo进行分页.
SELECT TOP 10 * FROM
(SELECT top 10 ROW_NUMBER() OVER (ORDER BY ReportID) AS RowNo
FROM TABLE) AS A
WHERE RowNo > " + pageIndex*10
三、ORCALE数据库 分页查询
ORCALE数据库实现分页查询可以使用 row_number()函数或者使用rownum 虚列两种方法。
第一 种:利用分析函数row_number() 方法
select * from(
select t.*,row_number() over (order by t1.id) rowno from TABLE1
)
where rowno between 21 and 40;
第二种:直接 使用rownum 虚列
select * from
(select t.*,rownum as rowno from TABLE1 )
where rowno between 10 and 20
这两种方法比较,显然第二种方法比较好。因为不用order by语句,会提高检索数据的速度的,尤其数据量越大时,第二种方法快速检索数据越明显。
分享到:
相关推荐
常用的数据库分页语句常用的数据库分页语句常用的数据库分页语句常用的数据库分页语句常用的数据库分页语句
常用数据库分页sql(),1.oracle数据库分页;2.DB2数据库分页;3.SQL Server 2000数据库分页;4.SQL Server 2005数据库分页5.MySQL数据库分页
数据库分页,常用数据库分页代码
主要是mysql、sqlserver、oracle、db2、分页 及规律
php 常用类,有pdo mysql 分页 常用类,很简单实用的 php类,还有图像处理类等
常用的属性设置 还带如何连接到sql server的分页
oracle mysql sqlserver 三大数据库在实际开发中的最常用分页书写!
此文件里面包含一些常用的数据库分页方法,这是我在学习的过程中和查阅一些资料总结出来的,希望能够帮助到你,欢迎下载哦。
jsp 加 oracle 数据库分页,自行创建表结构,表很简单的,比较适合初学者使用,共5个例子程序,其中常用的分页效果都有.
随着数据库中信息量的增大$查询分页技术已成为一种常用技术* 文章从数据库连接与查询+分页显示和页面保存方法 三方面入手$提出了基于 012 技术的数据库查询分页技术的解决方案$并给出了关键代码
不同数据库中分页的代码实现,常用的是方案1.这个不需要多说! 方案2有局限性。 hibernate对于分页就比较直接,Query接口提供有封装好的接口。
分页的几种写法: 第一种、从DataSet里筛选分页行的数据 第二种、直接SQL语句ROW_NUMGER() OVER(ORDER BY T.ID DESC) 第三种、最简单写法 (select top @pageSize*(@pageIndex-1)
java web jsp 常用模块1数据库连接2登陆退出3字符处理4目录处理5分页显示 几个很好用的模块 开发者突击
包含java中经常使用的类,Application页面访问次数统计,MD5Code密码加密类,常用数据库分页语句,错误验证,动态级联菜单,网站计数器,国际化,sqlserver驱动包,搜索引擎等!
1、本版分页只针对Sql Server数据库,采用top n分页方式,节约资源。 2、支持GridView、DataGrid、DataList等数据控件。 3、本分页已应用于数据量百万级的项目中。 4、使用简单,并包含多种样式布局 一、使用方法:...
为了探索Django 框架下Web 数据查询分页的实现方法及性能,本文先对Web 数据查询分页的执行过程和在 其它框架下常用的分页方法进行了分析研究。在此基础上,提出了在Web 服务层和在数据库服务层分页两种方案 ...
四个常用PHP类函数,文件上传,数据库类,生成静态html,分页类函数
///SqlGetReader()获得SqlDataReader对象 使用完须关闭DataReader,关闭数据库连接 ///SqlGetTable()执行查询语句,返回DataTable ///SqlDataSet()执行查询语句,返回DataSet ///SqlIsCunZai()执行Sql 语句查询...
存储过程分页实现实例源码 源码描述: Filename: PeterPageList * Description: 主要运用sql存储过程进行... * 备注信息: 上传部分自己总结的常用方法的封装,有不足和不完美之处,希望大家指出来,愿意一起学习交流
db2常用语句、db2常用语句、db2常用语句、db2常用语句、db2常用语句、db2常用语句、db2常用语句、db2常用语句