`
jessen163
  • 浏览: 465397 次
  • 性别: Icon_minigender_1
  • 来自: 潘多拉
社区版块
存档分类
最新评论

千万数量级分页存储过程

阅读更多
/* *************************************************************** ** 
千万数量级分页存储过程 ** *************************************************************** 参数说明: 1.Tables :表名称,视图 2.PrimaryKey :主关键字 3.Sort :排序语句,不带Order By 比如:NewsID Desc,OrderRows Asc 4.CurrentPage :当前页码 5.PageSize :分页尺寸 6.Filter :过滤语句,不带Where 7.Group :Group语句,不带Group By 

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)
欢迎试用,有什么心得请 Mail:xzhijun@GMail.com
注:转载请保留相关版权说明,谢谢!^_^
***************************************************************/
(
@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
分享到:
评论

相关推荐

    千万数量级分页存储过程,可支持多表查询,任意排序

    根据提供的标题、描述以及部分代码内容,我们可以提炼出关于“千万数量级分页存储过程”的关键技术知识点,并对其进行详细的解析。 ### 一、千万数量级数据处理背景 在现代数据库应用中,随着数据量的不断增长,...

    千万数量级分页存储过程_可支持多表查询_任意排序

    这是一个关于千万数量级分页存储过程_可支持多表查询_任意排序的存储过程处理源码

    sql server中千万数量级分页存储过程代码

    /* *************************************************************** ** 中国无忧商务网千万数量级分页存储过程 ** *************************************************************** 参数说明: 1.Tables...

    sqlserver 千万数量级分页存储过程代码

    该存储过程`[dbo].[SP_Pagination]`是专为处理大数据量的分页查询而设计的,尤其适用于SQL Server数据库中的千万数量级的数据。它允许用户高效地获取指定页码的数据,同时优化了性能,避免了全表扫描对数据库性能的...

    千万级分页存储过程 实现对表的数据分页 速度非常快

    本文将深入解析“千万级分页存储过程实现对表的数据分页速度非常快”的核心知识点,包括其原理、实现方法以及SQL Server中的具体应用。 ### 一、千万级分页存储过程的核心原理 在处理海量数据时,传统的全表扫描或...

    综合型企业级分页存储过程写的

    总结来说,企业级分页存储过程结合高效的数据库查询和应用程序调用,能够提供稳定、高性能的分页功能。在设计时,我们需要注意存储过程的可维护性和灵活性,以适应不断变化的业务需求。同时,正确地在应用程序中调用...

    千万级分页存储过程.doc

    在给定的文档“千万级分页存储过程.doc”中,描述了一个用于处理千万级别数据的分页存储过程,这个存储过程设计得非常高效,适合在大数据量的场景下使用。 首先,我们来理解这个存储过程的主要组成部分和参数: 1....

    oracle分页存储过程千万级

    本文将基于给定的“oracle分页存储过程千万级”文件信息,深入解析其核心概念、设计思路及实现细节。 ### 核心概念解析 #### 1. 存储过程(Stored Procedure) 存储过程是一种预编译的SQL代码块,存储在数据库...

    SqlServer千万级分页取数据.sql

    ** 千万数量级分页存储过程 ** *************************************************************** 参数说明: 1.Tables :表名称,视图 2.PrimaryKey :主关键字 3.Sort :排序语句,不带Order By 比如:NewsID Desc,...

    实现千万级数据分页的存储过程

    ### 实现千万级数据分页的存储过程 #### 背景与意义 在数据库管理中,处理大量数据时,如何高效地进行分页显示是一个常见的挑战。传统的SQL查询方式在面对海量数据时可能会出现性能瓶颈,导致响应时间过长。因此,...

    Oracle分页存储过程

    ### Oracle分页存储过程解析与应用 在数据库管理和应用程序开发中,处理大量数据时,分页查询是一项常用且重要的技术。Oracle数据库提供了多种方法来实现数据分页,其中使用存储过程进行分页是一种高效且灵活的方式...

    Oracle通用数据库存储过程代码--高效分页存储过程

    ### Oracle通用数据库存储过程代码——高效分页存储过程解析 #### 标题解析 标题“Oracle通用数据库存储过程代码——高效分页存储过程”表明这是一个适用于Oracle数据库的存储过程,主要用于实现高效的分页查询功能...

    百万级的分页存储过程

    ### 百万级的分页存储过程 在处理大量数据时,如何有效地进行分页查询是非常重要的技术之一。本文将详细介绍一个适用于Oracle数据库的高效分页存储过程,并对其内部实现原理进行深入剖析。 #### 存储过程概述 该...

    操作系统实验报告+源代码 基本分页存储管理

    操作系统实验报告中的主题是“基本分页存储管理”,这是一个核心的操作系统概念,旨在解决内存管理和虚拟地址到物理地址转换的问题。在本次实验中,学生通过编写源代码模拟了一个基本的分页存储管理系统。 分页存储...

    经过优化测试的SQL分页存储过程.docx

    ### 经过优化测试的SQL分页存储过程 在数据库管理与应用开发中,分页是一种常见的需求,尤其是在处理大量数据时。本文将基于提供的文档摘要深入探讨分页技术的相关知识点,包括传统分页方法的问题、优化后的分页...

    存储过程通用分页procedure

    - **分页**:将查询结果按照特定数量划分成多个页面的过程。 - **存储 Proc**:进一步强调这是一个与存储过程相关的程序或脚本。 #### 内容解析 此存储过程名为`cndoup_GetPageOfRecords`,其主要功能是根据提供的...

    sqlserver 存储过程分页(支持千万级)算法研究

    本文将深入探讨SQL Server存储过程中的高级分页技术,特别是针对千万级别数据量的场景,通过分析提供的代码示例,提炼出核心知识点,帮助读者理解和掌握高效分页查询的实现方法。 ### 1. 使用临时表和ROWCOUNT实现...

Global site tag (gtag.js) - Google Analytics