原贴地址:http://blog.csdn.net/smartkernel/archive/2008/02/22/2112917.aspx
www.SmartKernel.com
几种分页查询的实现与比较:个人比较推荐第5种方式,性能比较稳定,语法结构简单
--【00】初始化数据(执行几分钟就可以产生几百万数据)Person表结构:ID(int 自增列),Name(nvarchar(50)),Age(int)
WHILE 1 = 1
BEGIN
INSERT INTO dbo.Person (Name,Age) VALUES (NEWID(),Round(Rand()*100,1))
END
SELECT * FROM dbo.Person
--【01】200万数据情况下,测试时用了7秒:临时表的方法
DECLARE @StartRow INT
DECLARE @EndRow INT
SET @StartRow = 100
SET @EndRow = 110
SET ROWCOUNT 0
DECLARE @TempTable TABLE
(
ID int IDENTITY PRIMARY KEY,
PK int
)
INSERT INTO @TempTable SELECT ID FROM dbo.Person ORDER BY Name
SELECT A.* FROM Person AS A JOIN @TempTable AS B ON A.ID = B.PK WHERE B.ID >= @StartRow AND B.ID < @EndRow
--【02】200万数据情况下,测试时用了4秒:影响行数方法
DECLARE @StartRow INT
DECLARE @PageSize INT
SET @StartRow = 100
SET @PageSize = 10
DECLARE @Sort NVARCHAR(50)--与ORDER BY的列类型一致
SET ROWCOUNT @StartRow
SELECT @Sort = Name FROM Person ORDER BY Name
SET ROWCOUNT @PageSize
SELECT * FROM Person WHERE Name >= @Sort ORDER BY Name
--【03】200万数据情况下,测试时用了0秒:子查询的方法
DECLARE @StartRow INT
DECLARE @PageSize INT
SET ROWCOUNT 0
--SET @StartRow = 100(TOP关键字不能使用变量)
--SET @PageSize = 10(TOP关键字不能使用变量)
SELECT * FROM Person WHERE ID IN
(
SELECT TOP 10 ID FROM Person WHERE ID NOT IN(SELECT TOP 100 ID FROM Person ORDER BY Name)
ORDER BY Name
)
ORDER BY Name
--【04】200万数据情况下,测试时用了5秒:游标的方法
DECLARE @StartRow INT
DECLARE @PageSize INT
SET @StartRow = 100
SET @PageSize = 10
SET ROWCOUNT 0
DECLARE @ID INT
DECLARE @TempTable TABLE (ID INT NOT NULL PRIMARY KEY)
DECLARE PagingCursor CURSOR DYNAMIC READ_ONLY FOR
SELECT ID FROM Person ORDER BY Name
OPEN PagingCursor
FETCH RELATIVE @StartRow FROM PagingCursor INTO @ID
WHILE @PageSize > 0 AND @@FETCH_STATUS = 0
BEGIN
INSERT INTO @TempTable(ID) VALUES(@ID)
FETCH NEXT FROM PagingCursor INTO @ID
SET @PageSize = @PageSize - 1
END
CLOSE PagingCursor
DEALLOCATE PagingCursor
SELECT A.* FROM Person AS A JOIN @TempTable AS B ON A.ID = B.ID ORDER BY Name
--【05】200万数据情况下,测试时用了1秒:行号函数的方法(只有SQL Server 2005以上版本支持)
DECLARE @StartRow INT
DECLARE @PageSize INT
SET ROWCOUNT 0
SET @StartRow = 100
SET @PageSize = 10
SELECT * FROM
(
SELECT ROW_NUMBER() OVER (ORDER BY Name) AS RowNumber,* FROM Person
) AS A WHERE A.RowNumber BETWEEN @StartRow + 1 AND @StartRow + @PageSize
分享到:
相关推荐
HBase分页查询实现 HBase是一种基于分布式的NoSQL数据库,它提供了高效的数据存储和检索能力。然而,HBase本身不支持分页查询,这使得开发者需要自己实现分页功能。本文将讲解如何使用Java语言实现HBase的分页查询...
### Oracle认证详解:Oracle的几种分页查询语句 #### 分页查询背景及重要性 在数据库管理系统(DBMS)中,特别是在Oracle这样的大型关系型数据库中,分页查询是一种非常实用的技术。它允许用户根据需求获取特定...
### 常见的几种分页语句和方法 在软件开发中,特别是Web应用程序中,数据分页是一项非常重要的技术。它可以帮助我们更高效地处理大量数据,并提高用户体验。本文将详细介绍几种常用的分页方法,包括SQL语句分页、...
在分页查询中,我们通常需要以下几个步骤: 1. **请求处理**:当用户点击页面链接或提交表单时,Servlet捕获HTTP请求,通常包含页码和每页显示条数等参数。 2. **计算页数**:Servlet根据数据库中的总记录数和每页...
#### 四、基于ROWNUM的分页查询的两种方式比较 对于上述分页查询,有两种不同的实现方式: 1. **方式一**:通过内外两层`WHERE`子句分别控制每页的最大值和最小值。 ```sql SELECT * FROM ( SELECT A.*, ROWNUM ...
如果你的项目中同时包含了MyBatis,那么分页实现方式可能会有所不同。MyBatis允许我们在Mapper XML文件中编写SQL语句,通过设置参数来实现分页。例如,可以使用limit和offset关键字或者rownum伪列(根据数据库类型)...
#### 二、Java多线程分页查询原理及实现 ##### 1. 分页查询基础概念 分页查询是指在查询数据时,将数据分成多个页面展示,而不是一次性返回所有数据。这种方式能够有效地减少单次查询的数据量,从而提高查询速度和...
分页查询是一种在数据量较大的情况下,为了提高用户体验和系统性能而采取的一种技术手段。它将查询结果分成若干页显示,用户可以通过翻页操作查看不同的数据集。 在进行分页查询时,通常需要指定两个重要的参数:`...
根据java语言对达梦DM数据库的连接和操作,包括建表、新增、修改、删除、查询以及复杂查询和分页查询等完整代码,附送Dm7Dictionary的驱动包,此驱动包兼容jdk1.7和jdk1.8本人亲测完美兼容
总结一下,SSH框架下实现分页查询主要涉及以下几个步骤: 1. 在Action类中定义分页参数,并编写获取数据的方法。 2. 使用Spring依赖注入管理DAO对象,注入到Action中。 3. 在DAO实现类中使用Hibernate执行分页查询。...
以下将详细介绍几种常见的SQL分页查询方法。 1. **Not In / Top 方法** 这种方法通过`NOT IN`子查询配合`TOP`来实现分页。首先,获取需要排除的前n条记录,然后在主查询中排除这些记录,从而得到分页后的结果。...
在实际应用中,实现大数据量多线程分页查询的过程可能包括以下几个步骤: 1. **设计数据库表结构**:根据需求创建合适的表结构,合理利用索引以优化查询性能。 2. **实现分页查询**:使用SQL的`LIMIT`(MySQL)或`...
本文将详细介绍MySQL、SQL Server、Oracle以及DB2四种主流数据库中的分页实现方法。 #### MySQL 分页 在MySQL中,`LIMIT`关键字是实现数据分页的主要手段。其基本语法格式如下: ```sql SELECT * FROM 表名 LIMIT...
在这个"java实现的一个分页程序"中,我们可以探讨几个关键知识点: 1. **JDBC分页**:Java中的分页通常通过Java Database Connectivity (JDBC) API来实现。使用PreparedStatement和Statement对象,我们可以在SQL...
ACCESS 数据库大数据量分页的几种方法比较及测试结果分析 本文解决的问题:1.ACCESS 是否存在更有效率的分页方法?2.现有 ACCESS 大数据量 10 万条数据分页的效率测试3.ACCESS 的数据承载量到底有多大? ACCESS ...
### C#后台分页及数据库脚本常用的几种分页写法 #### 分页技术概述 在Web开发中,为了提高用户体验以及服务器性能,通常会采用分页技术来展示大量数据。分页技术不仅可以减少单次请求的数据量,降低服务器压力,还...
Struts2.0 是一个流行的Java Web开发框架,它提供了一种组织和控制MVC(Model-...同时,随着技术的发展,现代的Web应用可能更倾向于使用ORM框架(如Hibernate)和前端分页库(如jQuery DataTables)来简化分页实现。
在实现Datalist分页的过程中,主要涉及以下几个关键步骤: 1. 数据获取:首先,需要从服务器端获取全部或部分数据。这通常通过API接口完成,可以使用AJAX异步请求,或者在后端处理时直接分页返回。 2. 分页参数:...
本文将详细介绍在SQL Server、Oracle以及MySQL这三种常用数据库中实现分页查询的方法。 ### SQL Server 分页查询 #### 方法一:使用 `TOP` 关键字 SQL Server 提供了 `TOP` 关键字来进行分页查询。这种方式比较...