[分享]千万数量级分页存储过程(效果演示)
效果演示:http://www.cn5135.com/_App/Enterprise/QueryResult.aspx
CREATE PROCEDURE CN5135_SP_Pagination
/*
***************************************************************
** 千万数量级分页存储过程 **
***************************************************************
参数说明:
1.Tables :表名称,视图
2.PrimaryKey :主关键字
3.Sort :排序语句,不带Order By 比如:NewsID Desc,OrderRows Asc
4.CurrentPage :当前页码
5.PageSize :分页尺寸
6.Filter :过滤语句,不带Where
7.Group :Group语句,不带Group By
效果演示:http://www.cn5135.com/_App/Enterprise/QueryResult.aspx
***************************************************************/
(
@Tables varchar(1000),
@PrimaryKey varchar(100),
@Sort varchar(200) = NULL,
@CurrentPage int = 1,
@PageSize int = 10,
@Fields varchar(1000) = '*',
@Filter varchar(1000) = NULL,
@Group varchar(1000) = NULL
)
AS
/*默认排序*/
IF @Sort IS NULL OR @Sort = ''
SET @Sort = @PrimaryKey
DECLARE @SortTable varchar(100)
DECLARE @SortName varchar(100)
DECLARE @strSortColumn varchar(200)
DECLARE @operator char(2)
DECLARE @type varchar(100)
DECLARE @prec int
/*设定排序语句.*/
IF CHARINDEX('DESC',@Sort)>0
BEGIN
SET @strSortColumn = REPLACE(@Sort, 'DESC', '')
SET @operator = '<='
END
ELSE
BEGIN
IF CHARINDEX('ASC', @Sort) = 0
SET @strSortColumn = REPLACE(@Sort, 'ASC', '')
SET @operator = '>='
END
IF CHARINDEX('.', @strSortColumn) > 0
BEGIN
SET @SortTable = SUBSTRING(@strSortColumn, 0, CHARINDEX('.',@strSortColumn))
SET @SortName = SUBSTRING(@strSortColumn, CHARINDEX('.',@strSortColumn) + 1, LEN(@strSortColumn))
END
ELSE
BEGIN
SET @SortTable = @Tables
SET @SortName = @strSortColumn
END
SELECT @type=t.name, @prec=c.prec
FROM sysobjects o
JOIN syscolumns c on o.id=c.id
JOIN systypes t on c.xusertype=t.xusertype
WHERE o.name = @SortTable AND c.name = @SortName
IF CHARINDEX('char', @type) > 0
SET @type = @type + '(' + CAST(@prec AS varchar) + ')'
DECLARE @strPageSize varchar(50)
DECLARE @strStartRow varchar(50)
DECLARE @strFilter varchar(1000)
DECLARE @strSimpleFilter varchar(1000)
DECLARE @strGroup varchar(1000)
/*默认当前页*/
IF @CurrentPage < 1
SET @CurrentPage = 1
/*设置分页参数.*/
SET @strPageSize = CAST(@PageSize AS varchar(50))
SET @strStartRow = CAST(((@CurrentPage - 1)*@PageSize + 1) AS varchar(50))
/*筛选以及分组语句.*/
IF @Filter IS NOT NULL AND @Filter != ''
BEGIN
SET @strFilter = ' WHERE ' + @Filter + ' '
SET @strSimpleFilter = ' AND ' + @Filter + ' '
END
ELSE
BEGIN
SET @strSimpleFilter = ''
SET @strFilter = ''
END
IF @Group IS NOT NULL AND @Group != ''
SET @strGroup = ' GROUP BY ' + @Group + ' '
ELSE
SET @strGroup = ''
/*执行查询语句*/
EXEC(
'
DECLARE @SortColumn ' + @type + '
SET ROWCOUNT ' + @strStartRow + '
SELECT @SortColumn=' + @strSortColumn + ' FROM ' + @Tables + @strFilter + ' ' + @strGroup + ' ORDER BY ' + @Sort + '
SET ROWCOUNT ' + @strPageSize + '
SELECT ' + @Fields + ' FROM ' + @Tables + ' WHERE ' + @strSortColumn + @operator + ' @SortColumn ' + @strSimpleFilter + ' ' + @strGroup + ' ORDER BY ' + @Sort + '
'
)
GO
分享到:
相关推荐
根据提供的标题、描述以及部分代码内容,我们可以提炼出关于“千万数量级分页存储过程”的关键技术知识点,并对其进行详细的解析。 ### 一、千万数量级数据处理背景 在现代数据库应用中,随着数据量的不断增长,...
这是一个关于千万数量级分页存储过程_可支持多表查询_任意排序的存储过程处理源码
/* *************************************************************** ** 中国无忧商务网千万数量级分页存储过程 ** *************************************************************** 参数说明: 1.Tables...
该存储过程`[dbo].[SP_Pagination]`是专为处理大数据量的分页查询而设计的,尤其适用于SQL Server数据库中的千万数量级的数据。它允许用户高效地获取指定页码的数据,同时优化了性能,避免了全表扫描对数据库性能的...
本文将深入解析“千万级分页存储过程实现对表的数据分页速度非常快”的核心知识点,包括其原理、实现方法以及SQL Server中的具体应用。 ### 一、千万级分页存储过程的核心原理 在处理海量数据时,传统的全表扫描或...
总结来说,企业级分页存储过程结合高效的数据库查询和应用程序调用,能够提供稳定、高性能的分页功能。在设计时,我们需要注意存储过程的可维护性和灵活性,以适应不断变化的业务需求。同时,正确地在应用程序中调用...
在给定的文档“千万级分页存储过程.doc”中,描述了一个用于处理千万级别数据的分页存储过程,这个存储过程设计得非常高效,适合在大数据量的场景下使用。 首先,我们来理解这个存储过程的主要组成部分和参数: 1....
本文将基于给定的“oracle分页存储过程千万级”文件信息,深入解析其核心概念、设计思路及实现细节。 ### 核心概念解析 #### 1. 存储过程(Stored Procedure) 存储过程是一种预编译的SQL代码块,存储在数据库...
** 千万数量级分页存储过程 ** *************************************************************** 参数说明: 1.Tables :表名称,视图 2.PrimaryKey :主关键字 3.Sort :排序语句,不带Order By 比如:NewsID Desc,...
### 实现千万级数据分页的存储过程 #### 背景与意义 在数据库管理中,处理大量数据时,如何高效地进行分页显示是一个常见的挑战。传统的SQL查询方式在面对海量数据时可能会出现性能瓶颈,导致响应时间过长。因此,...
### Oracle分页存储过程解析与应用 在数据库管理和应用程序开发中,处理大量数据时,分页查询是一项常用且重要的技术。Oracle数据库提供了多种方法来实现数据分页,其中使用存储过程进行分页是一种高效且灵活的方式...
### Oracle通用数据库存储过程代码——高效分页存储过程解析 #### 标题解析 标题“Oracle通用数据库存储过程代码——高效分页存储过程”表明这是一个适用于Oracle数据库的存储过程,主要用于实现高效的分页查询功能...
### 百万级的分页存储过程 在处理大量数据时,如何有效地进行分页查询是非常重要的技术之一。本文将详细介绍一个适用于Oracle数据库的高效分页存储过程,并对其内部实现原理进行深入剖析。 #### 存储过程概述 该...
操作系统实验报告中的主题是“基本分页存储管理”,这是一个核心的操作系统概念,旨在解决内存管理和虚拟地址到物理地址转换的问题。在本次实验中,学生通过编写源代码模拟了一个基本的分页存储管理系统。 分页存储...
### 经过优化测试的SQL分页存储过程 在数据库管理与应用开发中,分页是一种常见的需求,尤其是在处理大量数据时。本文将基于提供的文档摘要深入探讨分页技术的相关知识点,包括传统分页方法的问题、优化后的分页...
- **分页**:将查询结果按照特定数量划分成多个页面的过程。 - **存储 Proc**:进一步强调这是一个与存储过程相关的程序或脚本。 #### 内容解析 此存储过程名为`cndoup_GetPageOfRecords`,其主要功能是根据提供的...
本文将深入探讨SQL Server存储过程中的高级分页技术,特别是针对千万级别数据量的场景,通过分析提供的代码示例,提炼出核心知识点,帮助读者理解和掌握高效分页查询的实现方法。 ### 1. 使用临时表和ROWCOUNT实现...