Mysql的分页的sql语句:
方法一:使用COUNT(*)的方式
SELECT COUNT(*) FROM foo WHERE b = 1; SELECT a FROM foo WHERE b = 1 LIMIT 100,10;
方法二:使用SQL_CALC_FOUND_ROWS
SELECT SQL_CALC_FOUND_ROWS a FROM foo WHERE b = 1 LIMIT 100, 10; SELECT FOUND_ROWS();
第二种方式调用SQL_CALC_FOUND_ROWS之后会将WHERE语句查询的行数放在FOUND_ROWS()
之中,第二次只需要查询FOUND_ROWS()就可以查出有多少行了。
讨论这两种方法的优缺点:
首先原子性讲,第二种肯定比第一种好。第二种能保证查询语句的原子性,第一种当两个请求之间有额外的操作修改了表的时候,结果就自然是不准确的了。而第二种则不会。但是非常可惜,一般页面需要进行分页显示的时候,往往并不要求分页的结果非常准确。即分页返回的total总数大1或者小1都是无所谓的。所以其实原子性不是我们分页关注的重点。
sqlserver的分页的sql语句:
分页方案一:(利用Not In和SELECT TOP分页)
SELECT TOP 10 * FROM TestTable WHERE ( ID NOT IN ( SELECT TOP 20 id FROM TestTable ORDER BY id) )ORDER BY ID
sql语句句型:
SELECT TOP 页大小 *FROM TestTable WHERE ( ID NOT IN (SELECT TOP 页大小*页数 id FROM 表 ORDER BY id) )ORDER BY ID
分页方案二:(利用ID大于多少和SELECT TOP分页)
SELECT TOP 10 *FROM TestTable WHERE ( ID >(SELECT MAX(id) FROM ( SELECT TOP 20 id FROM TestTable ORDER BY id) AS T) )ORDER BY ID
sql语句句型:
SELECT TOP 页大小 * FROM TestTable WHERE ( ID > (SELECT MAX(id)FROM ( SELECT TOP 页大小*页数 id FROM 表 ORDER BY id ) AS T) )ORDER BY ID
分页方案三:(利用SQL的游标存储过程分页)
代码如下:
create procedure XiaoZhengGe @sqlstr nvarchar(4000), --查询字符串 @currentpage int, --第N页 @pagesize int --每页行数 as set nocount on declare @P1 int, --P1是游标的id @rowcount int exec sp_cursoropen @P1 output,@sqlstr,@scrollopt=1,@ccopt=1,@rowcount=@rowcount output
其它的方案:如果没有主键,可以用临时表,也可以用方案三做,但是效率会低。
建议优化的时候,加上主键和索引,查询效率会提高。
通过SQL 查询分析器,显示比较:结论是:
分页方案二:(利用ID大于多少和SELECT TOP分页)效率最高,需要拼接SQL语句
分页方案一:(利用Not In和SELECT TOP分页) 效率次之,需要拼接SQL语句
分页方案三:(利用SQL的游标存储过程分页) 效率最差,但是最为通用
在实际情况中,要具体分析
SqlServer分页的存储过程:
方法一:
declare @PageNo int , @pageSize int; set @PageNo搜索 = 2 set @pageSize=20 select * from ( select row_number() over(order by object_id) rn,* from sys.objects ) tb where rn >(@PageNo-1)*@pageSize and rn <=@PageNo*@pageSize
方法二:
还有一种方法就是将排序字段作为变量,通过动态SQL 实现,可以改成存储过程。
declare @PageNo int , @pageSize int; declare @TableName varchar(128), @OrderColumns varchar(500), @SQL varchar(max); set @PageNo = 2, set @pageSize=20, set @TableName = 'sys.objects'set @OrderColumns = 'name ASC,object_id DESC' set @SQL = 'select * from ( select row_number() over(order by '+@OrderColumns+' ) rn,* from ' +@TableName+')tb where rn >'+convert(varchar(50),(@PageNo-1)*@pageSize) +' and rn <= '+convert(varchar(50),@PageNo*@pageSize)print @SQL exec(@SQL)
Oracle分页的SQL语句:
方法一:
--1.先查询出全量
--2.使用rownum,它不支持大于号,支持小于号
--3.把全量作为一个结果集,让rownum小于当前页的结束号,
查询出一个结果集,把rownum作为一个结果
--4.把第三步的查询的结果集作为一个表
--5.在外面套一层select,把里层的rw作为查询条件,让它大于起始行号
select * from (select rownum rw, a.* from ( select * from eb_item ) a where rownum < 16) b where b.rw > 10;
相关推荐
AspNetPager除提供默认的类似于DataGrid和GridView的PostBack分页方式外,还支持通过Url进行分页,象大多数asp程序中分页一样, Url分页方式允许用户通过在浏览器地址栏中输入相应的地址即可直接进入指定页面,也...
本文实例讲述了bootstrap-table后端分页功能。分享给大家供大家参考,具体如下: 使用bootstrap-table实现后台分页 插件资源点击此处本站下载。 引用以下css <link rel="stylesheet" href="../plugins/...
名称: 叶子asp分页类 Name: ShowoPage(vbs class) RCSfile: ReadMe.txt Revision: 0.12.20051114.f Author: Yehe(叶子) Released: 2005-11-14 09:40:13 Descript: ASP分页类,支持access/mssql/mysql/sqlite ...
结合mysql数据库查询,实现分页效果 @user.route("/user_list",methods=['POST','GET']) def user_list(): p = g.args.get("p", '') #页数 show_shouye_status = 0 #显示首页状态 if p =='': p=1 else: p=int...
jQuery分页插件设置分页内容显示数量的分页代码 jQuery分页插件设置分页内容显示数量的分页代码
sql 高效分页存储过程 sql 高效分页存储过程 sql 高效分页存储过程 sql 高效分页存储过程 sql 高效分页存储过程
超长文章自动分页超长文章自动分页超长文章自动分页超长文章自动分页超长文章自动分页超长文章自动分页超长文章自动分页超长文章自动分页超长文章自动分页超长文章自动分页超长文章自动分页超长文章自动分页超长文章...
数据库分页数据库分页数据库分页数据库分页数据库分页
分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码分页代码...
Ajax + JavaScript + MySQL 实现的Ajax分页功能
java实现分页 jsp分页 分页java实现分页 jsp分页 分页java实现分页 jsp分页 分页java实现分页 jsp分页 分页java实现分页 jsp分页 分页java实现分页 jsp分页 分页
一、支持网上流传的24种分页样式; 二、无限扩展自定义样式,灵活; 三、支持所有asp.net控件分页绑定; 四、分页效率高; 五、扩展方便、灵活性高; 六、支持所有浏览器,文档类型、兼容性高; 使用方法:...
超强php分页打包 通用分页 万能分页 ajax分页 google分页
一、此演示使MS Sql Server 2000默认安装的的数据库northwind,使用CUSTOMERS表中的数据做为演示,不用自已到处找表或自已建表 二、此Struts分页是一次性读取本次分页的数据,翻页时不用再读数据库中的数据。...
java 数据分页显示 java 数据分页显示 java 数据分页显示
高级分页高级分页高级分页高级分页高级分页高级分页高级分页高级分页高级分页高级分页高级分页高级分页高级分页高级分页高级分页高级分页高级分页高级分页高级分页高级分页高级分页高级分页高级分页高级分页高级分页...
织梦CMS默认首页文章列表是不能分页的,但是我这个网站主页做个人博客网站的,首页要用到分页,所以装了织梦首页分页插件这个插件来实现。但是装完插件后发现,首页分页URL地址是index**.html这种格式,和我原来hexo...
可以实现横向分页和纵向分页,主要用的是安卓原生实现
自己写的分页控件,在 http://download.csdn.net/source/3485783这个资源的基础上编译成DLL文件。同时支持MVC2 MVC3并有简单sample.非常简单。我相信大部分人能看懂我的sample 使用: 1、引用我的DLL 2、自己要坐...
分页是Web应用程序中最常用到的功能之一,在ASP.NET中,虽然自带了一个可以分页的DataGrid(asp.net 1.1)和GridView(asp.net 2.0)控件,但其分页功能并不尽如人意,如可定制性差、无法通过Url实现分页功能等,...