PhotoSprite | |
-- 建立表 --
-- 插入数据:(2万条,用更多的数据测试会明显一些) -- Declare @i int SET IDENTITY_INSERT TestTable OFF
-- 分页方案一:(利用Not In和SELECT TOP分页) /* 方法
-- 分页方案二:(利用ID大于多少和SELECT TOP分页) /* 方法
-- 分页方案三:(利用SQL的游标存储过程分页) SET NOCOUNT ON Declare @P1 int, --P1是游标的id exec sp_cursoropen @P1 output, @sql, @scrollopt=1, @ccopt=1, @rowcount=@rowcount output Select ceiling(1.0 * @rowcount / @pagesize) AS 总页数, @rowcount AS 总行数, @currentpage AS 当前页 exec sp_cursorfetch @P1,16,@currentpage,@pagesize SET NOCOUNT OFF
其它的方案:如果没有主键,可以用临时表,也可以用方案三做,但是效率会低。 通过SQL 查询分析器,显示比较:我的结论是: |
-
几种SQL Server数据库分页方式
2019-10-05 10:10:44分页方案二:(利用ID大于多少和SELECT TOP分页)效率最高,需要拼接SQL语句 分页方案一:(利用Not In和SELECT TOP分页) 效率次之,需要拼接SQL语句 分页方案三:(利用SQL的游标存储过程分页) 效率最差,但是最为...转载于:https://www.cnblogs.com/godwar/archive/2008/03/06/1092864.html
-
sql server,mysql,oracle 三中数据库分页方式,很有必要的。
2012-06-05 14:27:13sql server,mysql,oracle 三中数据库分页方式,很有必要的。 sql server: String sql = "select top " + pageSize + " * from students where id not in" + "(select top " + pageSize * (pageNumber-1) + " ...sql server,mysql,oracle 三中数据库分页方式,很有必要的。
sql server:
String sql =
"select top " + pageSize + " * from students where id not in" +
"(select top " + pageSize * (pageNumber-1) + " id from students order by id)" +
"order by id";
mysql:
String sql =
"select * from students order by id limit " + pageSize*(pageNumber-1) + "," +
pageSize;
oracle:
String sql =
"select * from " +
(select *,rownum rid from (select * from students order by postime desc) where
rid<=" + pagesize*pagenumber + ") as t" +
"where t>" + pageSize*(pageNumber-1); -
常用数据库分页方式实现(Oracle、MySQL、PostgreSQL、SQL server)
2019-12-24 10:44:33postgresql数据库分页实现方式: SELECT select_list FROM table_expression [LIMIT { number | ALL }] [OFFSET number] OFFSET说明在开始返回行之前忽略多少行。OFFSET 0和省略OFFSET子句是一样的。 如果OFFSET...postgresql数据库分页实现方式:
SELECT select_list FROM table_expression [LIMIT { number | ALL }] [OFFSET number]
OFFSET说明在开始返回行之前忽略多少行。 OFFSET 0和省略OFFSET子句是一样的。 如果OFFSET和LIMIT都出现了, 那么在计算LIMIT个行之前忽略OFFSET行。
oracle数据库分页实现方式:
SELECT * FROM ( SELECT rownum AS rnum, e.* FROM ( SELECT * FROM table ) e WHERE rownum <= 10 ) WHERE rnum >= 8;
使用rownum实现。
mysql数据库分页实现方式:
//收到客户端{pageNo:1,pagesize:10} select * from table limit (pageNo-1)*pageSize, pageSize;
第一个参数代表开始查询的行数,第二个参数代表每页的行数。
sqlserver数据库分页实现方式:
//每页10条,取第31-40条数据。 //方法一:max/top select top 10 * from a where id>(select max(id) from (select top 30 id from a order by id)a1) order by id //方法二:row_number() 其中ROW_NUMBER()只支持sql2005及以上版本 select top 10 * from (select row_number()over(order by id)rownumber,* from a)a1 where rownumber>30
-
几种SqlServer数据库分页方式[转载]
2005-12-01 17:59:00几种SqlServer数据库分页方式[转载] 建立表: CREATE TABLE [TestTable] ( [ID] [int] IDENTITY (1, 1) NOT NULL , [FirstName] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL , [LastName] ...建立表:
CREATE TABLE [TestTable] (
[ID] [int] IDENTITY (1, 1) NOT NULL ,
[FirstName] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
[LastName] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
[Country] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Note] [nvarchar] (2000) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
插入数据:(2万条,用更多的数据测试会明显一些)
SET IDENTITY_INSERT TestTable ON
declare @i int
set @i=1
while @i<=20000
begin
insert into TestTable([id], FirstName, LastName, Country,Note) values(@i, ''FirstName_XXX'',''LastName_XXX'',''Country_XXX'',''Note_XXX'')
set @i=@i+1
end
SET IDENTITY_INSERT TestTable OFF
-------------------------------------
分页方案一:(利用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
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
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
select ceiling(1.0*@rowcount/@pagesize) as 总页数--,@rowcount as 总行数,@currentpage as 当前页
set @currentpage=(@currentpage-1)*@pagesize+1
exec sp_cursorfetch @P1,16,@currentpage,@pagesize
exec sp_cursorclose @P1
set nocount off
其它的方案:如果没有主键,可以用临时表,也可以用方案三做,但是效率会低。
建议优化的时候,加上主键和索引,查询效率会提高。
通过SQL 查询分析器,显示比较:我的结论是:
分页方案二:(利用ID大于多少和SELECT TOP分页)效率最高,需要拼接SQL语句
分页方案一:(利用Not In和SELECT TOP分页) 效率次之,需要拼接SQL语句
分页方案三:(利用SQL的游标存储过程分页) 效率最差,但是最为通用
在实际情况中,要具体分析。转载于:https://www.cnblogs.com/Mason/archive/2005/12/01/288675.html
-
CYQ.Data 数据框架 数据库分页方式及存储过程[SQL2000/SQL2005/Oracle]
2019-09-15 02:12:53在 CYQ.Data 分页是内部集成的功能,针对不同的数据库,使用不同的分页形式。 1:Access:集成:使用3次Top分页2:MySql:集成,使用LimitN分页3:Sqlite:集成,使用LimitN分页4:Sql2000:外置存储... -
cyq.data mysql_CYQ.Data 数据框架 数据库分页方式及存储过程[SQL2000/SQL2005/Oracle]
2021-01-26 21:03:45在 CYQ.Data 分页是内部集成的功能,针对不同的数据库,使用不同的分页形式。1:Access:集成:使用3次Top分页2:MySql:集成,使用LimitN分页3:Sqlite:集成,使用LimitN分页4:Sql2000:外置存储过程,使用临时表... -
几种SqlServer数据库分页方式
2006-05-21 15:43:00分页方案一: ( 利用 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 SELECT TOP 页大小 * ... -
数据库分页的方式
2016-08-15 14:33:55数据库 分页 -
易语言mysql数据库分页_Mysql数据库分页查询
2021-01-19 04:54:42分页查询的方式:1.全部查询,在前台展示的时候,只展示其中的一部分。适用于数据库数据较少的时候。2.数据库获取数据的时候,只查询部分的数据,然后前台直接展示。适用于数据量大的时候。limit index ,lengthA... -
数据库分页实现方式
2010-04-16 10:20:00不同数据库分页 收藏 ORACLE分页=========================================分页的宗旨是控制查询出来的数据个数,下面这条语句对于Oracl -
数据库分页
2018-09-21 21:18:231)前言:数据库分页,是一个常用重要的业务需要,实现的SQL方式有多种,需要了解不同的方式有何不同,更需要知道每一种的效率,若数据量很大时,效率是很重要的。 注:本文,以后会根据不同类型数据库和不同版本,... -
ASP.NET下的B/S模式分页的3种方式:前端分页,后台分页,数据库分页
2021-04-06 10:52:39分页一般有3种方式,前端分页,后端分页,数据库分页,本文会一一说明 1.前端分页 前端分页主要的分页逻辑均在前端实现,后台只提供数据,页面初始化时,将数据赋予前端定义好的变量即可,格式为json,下面给出各端实现逻辑 ... -
数据库分页的实现
2019-10-08 22:50:04分页技术主要分三种:客户端分页、数据库分页、服务器端分页。 客户端分页:客户端分页说的直白一点就是在前台进行分页。这种分页的方式减少了与数据库的交互次数,但主要不足之处在于它要先把所有的数据从... -
各种数据库分页查询方法
2020-12-14 21:59:35具体实现中,根据所用数据库、数据量、实现分页方式,选择分页实现快的方式实现。 一、MYSQL分页查询方法 MYSQL分页查询主要使用其自带的limit函数,但需根据查询量来决定具体的使用方式,如只有几千或几万... -
数据库分页的几种方式
2017-12-19 17:01:001. 通过数据库的ROW_NUMBER()Over() 函数 eg: select * from (select ROW_NUMBER()Over(order by dbkey desc) as rowid,UsersLoginName from PayClerk) B WHERE rowid between 1 and 20 pagesize*(pagindex-1)... -
数据库的常用分页方式
2020-01-19 17:26:07数据库的分页方式 数据库的分页方式,优化加快了服务端数据的反馈;这里总结了常见的数据库的分页模式示例: 1、最简单便利的数据库: MYSQL select * from TABLE limit (curPage-1)*pageSize,pageSize 示例: ... -
实现数据库分页
2017-07-30 21:27:32如果我们采用jdbc的方式连接数据库,那么不同的数据库就会有不同的分页语句。 //jdbc是(Java datasource connectivity)一种数据库连接技术,由一些写好的接口和类组成,sun公司已经写好了jdbcAPI,而各种数据库... -
数据库分页通用(3种方式)
2013-05-09 08:23:34用三种方法在数据库中进行分页,只需传入相关参数(表名,页大小,页索引等)就可以进行获得相应页的数据 -
数据库分页显示的几种实现方式
2019-01-20 23:57:32曾经面试有个人问我分页的几种实现方式和框架这些,现在才回,有点晚,这里只用了一种实现方式,利用spring boot的jpa中page对象的实现。还有数据库自带的limit语句,和SSM框架中的mybatis语句中常用,以后遇到了... -
数据库的分页方式
2013-09-24 06:36:351.逻辑分页的第一种方式,利用ResultSet的滚动分页。步骤如下: a.根据条件sql查询数据库。 b.得到ResultSet的结果集,由于ResultSet带有游标,因此可以使用其next()方法来指向下一条记录。 c.利用next()方法...