实现千万级数据的分页显示
作者:紫色形人
/*
经测试,在 14483461 条记录中查询第 100000 页,每页 10 条记录按升序和降序第一次时间均为 0.47 秒,第二次时间均为 0.43 秒,测试语法如下:
exec GetRecordFromPage news,newsid,10,100000
news 为 表名, newsid 为关键字段, 使用时请先对 newsid 建立索引。
*/
/*
函数名称: GetRecordFromPage
函数功能: 获取指定页的数据
参数说明: @tblName 包含数据的表名
@fldName 关键字段名
@PageSize 每页记录数
@PageIndex 要获取的页码
@OrderType 排序类型, 0 - 升序, 1 - 降序
@strWhere 查询条件 (注意: 不要加 where)
作 者:紫色形人
邮 箱: kissyougoodby@163.com
创建时间: 2007-9-27
修改时间: 2007-9-27*/
CREATE PROCEDURE GetRecordFromPage
@tblName varchar(255), -- 表名
@fldName varchar(255), -- 字段名
@PageSize int = 10, -- 页尺寸
@PageIndex int = 1, -- 页码
@OrderType bit = 0, -- 设置排序类型, 非 0 值则降序
@strWhere varchar(2000) = '' -- 查询条件 (注意: 不要加 where)
AS
declare @strSQL varchar(6000) -- 主语句
declare @strTmp varchar(1000) -- 临时变量
declare @strOrder varchar(500) -- 排序类型
if @OrderType != 0
begin
set @strTmp = "<(select min"
set @strOrder = " order by [" + @fldName +"] desc"
end
else
begin
set @strTmp = ">(select max"
set @strOrder = " order by [" + @fldName +"] asc"
end
set @strSQL = "select top " + str(@PageSize) + " * from ["
+ @tblName + "] where [" + @fldName + "]" + @strTmp + "(["
+ @fldName + "]) from (select top " + str((@PageIndex-1)*@PageSize) + " ["
+ @fldName + "] from [" + @tblName + "]" + @strOrder + ") as tblTmp)"
+ @strOrder
if @strWhere != ''
set @strSQL = "select top " + str(@PageSize) + " * from ["
+ @tblName + "] where [" + @fldName + "]" + @strTmp + "(["
+ @fldName + "]) from (select top " + str((@PageIndex-1)*@PageSize) + " ["
+ @fldName + "] from [" + @tblName + "] where " + @strWhere + " "
+ @strOrder + ") as tblTmp) and " + @strWhere + " " + @strOrder
if @PageIndex = 1
begin
set @strTmp = ""
if @strWhere != ''
set @strTmp = " where (" + @strWhere + ")"
set @strSQL = "select top " + str(@PageSize) + " * from ["
+ @tblName + "]" + @strTmp + " " + @strOrder
end
exec (@strSQL)
GO
分享到:
相关推荐
mssql实现千万级数据的分页显示,超级好用
### 实现千万级数据分页的存储过程 #### 背景与意义 在数据库管理中,处理大量数据时,如何高效地进行分页显示是一个常见的挑战。传统的SQL查询方式在面对海量数据时可能会出现性能瓶颈,导致响应时间过长。因此,...
本文将深入探讨如何设计和实现一个用于处理千万级数据分页的存储过程,并基于提供的"存储过程分页.sql"文件进行解析。 首先,我们需要理解分页的基本概念。分页是将大量数据分成小块(页)进行显示,以避免一次性...
本文详细介绍了如何设计一个能够支持千万数量级数据处理的分页存储过程,包括了多表查询的支持、任意排序功能的实现以及高效的数据获取策略等关键知识点。通过对这些技术点的理解和掌握,可以有效地提高数据库应用的...
### 实现千万级数据的SQL分页代码 #### 背景与意义 在处理大量数据时,如何高效地进行分页查询是非常重要的。对于拥有数百万甚至上千万条记录的数据库表,如果采用传统的分页方法(如简单地通过LIMIT进行偏移),...
本文将基于给定的“oracle分页存储过程千万级”文件信息,深入解析其核心概念、设计思路及实现细节。 ### 核心概念解析 #### 1. 存储过程(Stored Procedure) 存储过程是一种预编译的SQL代码块,存储在数据库...
本主题将深入探讨如何在SQL Server中利用通用存储过程实现千万级数据库的高速分页显示,以提高用户体验并减轻服务器压力。 一、分页原理与需求分析 在网页或应用中,为了防止一次性加载过多数据导致性能下降或用户...
本实例聚焦于“java实现csv导出千万级数据实例”,旨在提供一个高效、稳定的解决方案,避免因数据量过大而导致的性能问题,如Java中的栈溢出(Stack Overflow)。CSV(Comma Separated Values)格式因其简单、通用性...
1. **数据分页**:分页是将大表数据分成若干个小块(页面),每次只加载和显示一页的数据,而不是一次性加载全部。这种方式减少了内存消耗,提高了响应速度。在Qt中,可以自定义一个信号槽机制,当用户滚动或点击...
总结来说,这个千万级分页存储过程通过精心设计的逻辑,实现了高效的大规模数据分页查询,适用于需要处理大量数据的数据库系统。它不仅考虑了排序、过滤和分组,还优化了对字符类型数据的处理,确保在处理大数据量时...
首先,存储过程的标题直接说明了其功能:“ASP 千万级数据分页的存储过程”。标题简洁明了地告诉了读者该存储过程的应用场景,即在ASP(Active Server Pages,即活动服务器页面)环境下处理大量数据时的数据分页操作...
对于千万级别的数据,直接加载到内存中显然是不现实的,因此我们需要实现一种分页或者按需加载的机制。这通常通过自定义`QAbstractTableModel`来实现。 `tablemodel.cpp`和`tablemodel.h`是实现自定义模型的关键...
本文将深入探讨SQL Server存储过程中的高级分页技术,特别是针对千万级别数据量的场景,通过分析提供的代码示例,提炼出核心知识点,帮助读者理解和掌握高效分页查询的实现方法。 ### 1. 使用临时表和ROWCOUNT实现...
**Qt编写的数据库分页demo**是一个用于展示如何在Qt应用程序中实现高效、用户友好的数据库数据分页功能的示例项目。这个demo的核心在于它能够处理大量的数据,如千万级记录,同时提供流畅的用户体验,包括上一页、...
### 实现DataGridView的分页及全选取消全选的功能 #### 一、概述 ...此外,还提供了一个用于千万级数据量的SQL数据库分页存储过程。这些技术的应用可以帮助开发者有效地提高用户界面的性能和用户体验。
在处理海量数据时,查询优化和分页算法的效率至关重要,尤其是在像MS SQL ...通过这些方法,即使在拥有千万级数据的MS SQL SERVER数据库中,也能实现快速的数据提取和分页显示,从而提升整体系统的响应速度和用户体验。
这种方式在处理百万、千万级别的数据时尤为重要,因为它可以显著减少内存占用,同时允许用户逐步加载和浏览数据,提高网页响应速度。分页查询通常需要两个参数:当前页数和每页显示的记录数。 **MyBatis分页插件** ...
3. **数据分页与懒加载**: 分页是一种常见的数据管理策略,通过将数据分成小块(页)来降低内存压力。懒加载则是在用户滚动到新一页时才加载相应数据,这与数据虚拟化相辅相成,可以确保在用户交互时保持良好的...
本文将基于“办公自动化”系统,探讨在MSSQL SERVER数据库中处理千万级数据的查询优化和分页策略。 首先,对于查询优化,关键在于合理设计数据库表结构和索引。在示例中的`TGongwen`表中,可以看到有`Gid`作为主键...