`

高效分页存储过程

阅读更多

存储过程与页面调用如下:

CREATE PROCEDURE search_sp
@tblName varchar(255), -- 表名
@strGetFields varchar(1000) = '*', -- 需要返回的列
@fldName varchar(255)='', -- 排序的字段名
@PageSize int = 10, -- 页尺寸
@PageIndex int = '', -- 页码
@doCount bit = 0, -- 返回记录总数, 非 0 值则返回
@OrderType bit = '', -- 设置排序类型, 非 0 值则降序
@strWhere varchar(1500) = '' -- 查询条件 (注意: 不要加 where)
AS

declare @strSQL  nvarchar(4000) -- 主语句
declare @strTmp varchar(110) -- 临时变量
declare @strOrder varchar(400) -- 排序类型
if @doCount != 0
begin
if @strWhere !=''
set @strSQL = 'select count(1) as Total from [' + @tblName + '] where '+@strWhere
else
set @strSQL = 'select count(1) as Total from [' + @tblName + ']'
end
--以上代码的意思是如果@doCount传递过来的不是0,就执行总数统计。以下的所有代码都是@doCount为0的情况

else
begin
if @OrderType != 0
begin
set @strTmp = '< (select min'
set @strOrder = ' order by [' + @fldName +'] desc'
--如果@OrderType不是0,就执行降序,这句很重要!
end

else
begin
set @strTmp = '> (select max'
set @strOrder = ' order by [' + @fldName +'] asc'
end
if @PageIndex = 1
begin
if @strWhere != ''
set @strSQL = 'select top ' + str(@PageSize) +' '+@strGetFields+ ' from [' + @tblName + '] where ' + @strWhere + ' ' + @strOrder
else
set @strSQL = 'select top ' + str(@PageSize) +' '+@strGetFields+ ' from ['+ @tblName + '] '+ @strOrder
--如果是第一页就执行以上代码,这样会加快执行速度
end

else
begin
--以下代码赋予了@strSQL以真正执行的SQL代码
set @strSQL = 'select top ' + str(@PageSize) +' '+@strGetFields+ ' 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) +' '+@strGetFields+ ' from ['
+ @tblName + '] where [' + @fldName + ']' + @strTmp + '(['
+ @fldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' ['
+ @fldName + '] from [' + @tblName + '] where ' + @strWhere + ' '
+ @strOrder + ') as tblTmp) and ' + @strWhere + ' ' + @strOrder
end
end
exec SP_EXECUTESQL @strSQL

GO


页面调用:
SearchText=ChkStr(request("SearchText"))
types=ChkStr(request("type"))
tblName="search_sp"
strGetFields="*"
fldName="info_id"
if trim(SearchText)="" then
response.End()
end if
if request("page")="" then
page=1
else
page=request("page")
end if
if types<>"" then
strWhere="title like ''%"&SearchText&"%'' and type=''"&types&"''"
else
strWhere="title like ''%"&SearchText&"%''"
end if
strSql="exec search_sp  'info','info_id,type,sortid,title,dateandtime','info_id',30,'"&page&"',0,1,'"&strWhere&"'"
set rs = conn.Execute(strSql)

分享到:
评论

相关推荐

    高效分页存储过程 高效分页存储过程

    高效分页存储过程的实现对于优化数据库性能至关重要。本文将深入探讨如何创建和使用高效的分页存储过程,并针对SQL Server 2005及2010提供一个实用的例子。 首先,理解分页的基本概念。分页通常涉及到两个关键参数...

    高效分页存储过程高效分页存储过程高效分页存储过程

    通过这种方式,高效分页存储过程能够灵活适应不同的分页需求,并通过动态生成SQL来减少不必要的数据读取,从而提高数据库性能。然而,这种方法可能不适用于所有场景,例如,当表的结构复杂或者数据分布不均匀时,...

    高效分页存储过程过程

    ### 高效分页存储过程实现详解 #### 标题:高效分页存储过程过程 #### 描述: 本文档详细介绍了如何使用一个自定义的存储过程`search_sp`来实现数据库中的分页查询功能。该存储过程允许用户指定表名、需要返回的...

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

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

    Oracle 高效分页存储过程(修改)

    本文将深入探讨Oracle数据库中的高效分页存储过程及其修改版。 首先,我们要理解什么是分页查询。分页查询是数据库中的一种查询策略,它将结果集分为多个部分,每次只返回一部分(一页)结果给用户。这通常涉及到两...

    sql高效分页存储过程

    sql高效分页存储过程,本人已使用多个项目无发现问题的,推荐大家使用。

    Server2005高效分页存储过程(支持多字段排序)

    Server2005/2008专用高效分页存储过程(支持多字段排序).

    Server2005高效分页存储过程(支持多字段排序,支持Group By)

    ### Server2005高效分页存储过程详解 在数据库应用开发中,高效地处理大量数据的查询结果是一项重要的技术需求。特别是在Web应用程序中,为了提高用户体验,避免服务器因加载大量数据而产生的性能问题,分页显示...

    效率高的分页存储过程实现的分页

    总结来说,高效分页存储过程的实现是通过数据库优化和ASP.NET控件结合实现的,它能够提高用户体验,降低服务器压力。合理设计和使用存储过程是数据库开发中的重要技巧,尤其是在处理大数据量的场景下。

    高效的分页存储过程.txt

    ### 高效分页存储过程知识点解析 #### 标题:高效的分页存储过程 - **主要内容**:本文档提供了一个SQL Server中的高效分页存储过程实现方式,旨在通过优化查询逻辑来提升分页功能的执行效率。 #### 描述:存储...

    Asp.net 高效的分页存储过程

    Asp.net 高效的分页存储过程,已通过测试.

    Oracle 分页存储过程 终极版

    "Oracle分页存储过程 终极版"旨在提供一个高效、灵活的解决方案,以应对各种分页查询的需求。这个存储过程优化了性能,并支持各种条件筛选和排序,使得在海量数据中进行分页操作变得更为便捷。 首先,理解分页的...

    MySql 分页存储过程以及代码调用

    总结来说,MySQL的分页存储过程提供了一种高效、可复用的方式来处理分页查询,减少了直接使用OFFSET可能导致的性能问题。通过创建存储过程并在应用程序中调用,我们可以更好地控制分页逻辑,提高查询速度,提升用户...

    万能分页存储过程

    本文将详细介绍一个名为“万能分页存储过程”的SQL Server存储过程,该存储过程可以实现在多种情况下的高效分页功能。 #### 二、存储过程定义 根据提供的部分代码内容,我们可以看出这是一个用于执行分页查询的存储...

    分页存储过程示例系统

    总的来说,"分页存储过程示例系统"是一个演示了如何在数据库级别利用存储过程来实现高效分页查询的系统。这对于大型的、数据密集型的应用程序,尤其是新闻系统,是非常实用的策略,因为它能够优化数据检索,改善系统...

    MYSQL分页存储过程

    本文将深入解析MySQL中的分页存储过程,通过实例代码讲解其工作原理与实现步骤。 ### MySQL分页存储过程概述 分页存储过程是一种在数据库层面上实现数据分页的技术。相比应用程序级别的分页,它能更高效地处理数据...

    c#调用分页存储过程

    "C#调用分页存储过程"是一个常见的技术实践,它结合了C#编程语言和SQL Server的存储过程来高效地获取数据库中的分页数据。这种方法可以有效地减少网络传输的数据量,提高用户界面的响应速度,尤其是在数据量达到百万...

    百万级的分页存储过程

    本文将详细介绍一个适用于Oracle数据库的高效分页存储过程,并对其内部实现原理进行深入剖析。 #### 存储过程概述 该存储过程名为`sp_paging`,其主要功能是基于输入参数来执行分页查询。具体参数包括: - `@...

Global site tag (gtag.js) - Google Analytics