平台与环境:
CPU:Intel(R) Pentium(R) Dual T2390 1.86GHz
内存:1G(系统正常启动后约占300M空间)
硬盘:SATA 160G 8M Cache
系统:windowsxp+Sql Server 2005 sp2
测试数据:共100万条
分页测试代码:
1)row_number的两种分页方式:分别用top和between过滤
2)包含子查询结果的三种分页方式
共5种方式。
方式1:
每页显示200条
分页至10万条之后的第两百条记录
PROCEDURE [dbo].[proc_select_moauser1]
AS
BEGIN
SET NOCOUNT ON;
declare @tdiff datetime
set @tdiff=getdate()
select top 200 * from(select row_number() over(order by uid asc) as rownumber,* from moa_user ) as tb where rownumber>100000
select datediff(ms,@tdiff,getdate()) as '耗时(毫秒)'
END
响应时间:156ms-210ms
方式2:
每页显示200条
分页至10万条之后的第两百条记录
PROCEDURE [dbo].[proc_select_moauser2]
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
declare @tdiff datetime
set @tdiff=getdate()
select * from(select row_number() over(order by uid asc) as rownumber,* from moa_user ) as tb where rownumber between 100000 and 100200
select datediff(ms,@tdiff,getdate()) as '耗时(毫秒)'
END
响应时间:153ms-176ms
方式3
每页显示200条
分页至10万条之后的第两百条记录
PROCEDURE [dbo].[proc_select_moauser3]
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
declare @tdiff datetime
set @tdiff=getdate()
select top 200 * from moa_user a where uid not in(select top 100000 uid from moa_user b order by uid)
select datediff(ms,@tdiff,getdate()) as '耗时(毫秒)'
END
响应时间:270ms-290ms
方式4:
每页显示200条
分页至10万条之后的第两百条记录
PROCEDURE [dbo].[proc_select_moauser4]
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
declare @tdiff datetime
set @tdiff=getdate()
-- Insert statements for procedure here
select * from ( select TOP 200 * FROM ( SELECT TOP 100000 * from moa_user ORDER BY uid ASC ) as amoaUser ORDER BY uid DESC ) as bmoaUser ORDER BY uid ASC
select datediff(ms,@tdiff,getdate()) as '耗时(毫秒)'
END
响应时间:950ms
方式5:
每页显示200条
分页至10万条之后的第两百条记录
PROCEDURE [dbo].[proc_select_moauser5]
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
declare @tdiff datetime
set @tdiff=getdate()
-- Insert statements for procedure here
SELECT TOP 200 * FROM moa_user WHERE (uid > (SELECT MAX(uid) FROM (SELECT TOP 100000 uid FROM moa_user ORDER BY uid) AS temp_moa_user)) ORDER BY uid
select datediff(ms,@tdiff,getdate()) as '耗时(毫秒)'
END
响应时间:135ms
分享到:
相关推荐
另一种方法是使用原生SQL查询,这样可以直接控制SQL语句的生成,包括使用LIMIT和OFFSET关键字(对于MySQL等数据库)或ROW_NUMBER()函数(对于SQL Server)来实现分页。这同样可以绕过Hibernate的默认只进结果集行为...
sqlserver分页查询语句;sqlserver分页查询语句;sqlserver分页查询语句;
String url = "jdbc:sqlserver://localhost:1433;databaseName=myDatabase"; String username = "myUsername"; String password = "myPassword"; try { Class.forName(...
首先,我们要明白SQL Server分页查询的基本思想:一次查询只返回所需页面的数据,而不是一次性获取所有数据,这样可以减少网络传输量,减轻服务器压力,并提升查询速度。在SQL Server中,通常使用`TOP`关键字结合子...
3. **执行分页查询**:使用动态生成的SQL语句执行查询,并通过设置`ROWCOUNT`来限制返回的结果集大小。 ### 综合运用`GROUP BY`、存储过程和分页技术 在给定的存储过程中,`GROUP BY`子句与分页查询的结合使用提供...
在SQL Server 2005中,分页查询是一个常见的需求,特别是在处理大量数据时,为了提高用户体验,通常需要一次性加载一定数量的数据,而不是一次性显示所有数据。以下将详细讲解SQL Server 2005中分页查询的常用方法。...
关于SQL Server SQL语句查询分页数据的解决方案 在日常工作中,我们经常需要处理大量数据,并从中获取特定页面的数据。特别是在Web应用开发中,为了提高用户体验,通常会将数据进行分页显示。针对这一需求,本文将...
SQL server2008中通用分页存储过程,表名,每页长度,页码都是动态赋值。
《Microsoft SQL Server 2005技术内幕:T-SQL查询》是一本深入解析SQL Server 2005中T-SQL查询语言的专业书籍。T-SQL(Transact-SQL)是微软对标准SQL的扩展,是SQL Server的核心组件,用于数据库管理、数据查询和...
### 在SQL Server中通过SQL语句实现分页查询 #### 一、背景介绍 在数据库应用开发中,分页查询是一种常见的技术手段,用于改善用户体验并提高系统性能。特别是当数据量庞大时,一次性加载所有数据到前端不仅会导致...
通过`Statement`或`PreparedStatement`对象执行SQL语句,并使用`ResultSet`对象获取结果。 2. 分页查询SQL构造:对于MySQL,分页查询SQL可能如下: ```sql SELECT * FROM table LIMIT offset, limit; ``` 对于...
SQL Server 提供了多种方式进行分页查询,其中一种方式是通过存储过程来实现。 #### 存储过程分页概述 存储过程是一种预先编译好的 SQL 代码块,存储在 SQL Server 数据库中。使用存储过程进行分页查询的好处包括:...
几条常见的数据库分页SQL 语句,针对oracle,sqlserver,mysql三种常见数据库的分页显示。
3. Sql Server 2005:这是一个关系型数据库管理系统,提供数据存储、查询和管理功能,支持高效的分页查询。 二、分页实现步骤 1. 数据库设计与准备: - 设计一个包含多行数据的表。 - 在Sql Server 2005中创建并...
综上所述,这个"struts2+sqlserver2000+jstl+分页"示例项目展示了如何整合这四个技术,构建一个能够动态分页显示数据库内容的Web应用。开发过程中,需要理解每个技术的作用,以及它们之间的协作方式。例如,Struts2...
在Java中,我们需要获取前端传来的页码和每页大小,然后构造上述SQL语句并执行: ```java @PostMapping("getData") public Map, Object> getData(@RequestParam int page, @RequestParam int pageSize) { String ...
本文介绍一种简单且高效的SQL Server存储过程实现分页的方法,这种方法仅需提供SQL语句、每页的记录数以及当前页数即可快速完成分页操作。 #### SQL Server存储过程分页原理 在SQL Server中,通过存储过程实现分页...
本文将详细介绍几种常用的SQL分页技术,包括不同版本的SQL Server(如SQL Server 2000、2005)中的实现方法,并对每种方法进行深入解析。 #### 1. 使用`NOT IN`子句的分页方法(SQL Server 2000/2005) **SQL语句...
前言 在实际开发过程中,当数据量比较多的时候,大量的数据一下子展示到页面上是非常不可取的。所以我们通常要进行分页(这里的分页是指真分页),而不是前端JS...一、三种分页SQL语句的介绍和写法 示例数据库的字段: