`

存储过程中的分页技巧(最实用的)

阅读更多
大家在开发时都会面临分页的问题,
1.假分页
把数据库的内容全查出来帮到控件上然后再分页显示给用户,效率非常低,2千数据一下凑合还能用,两千条以上就没法用了
2.数据MMSSQl自带的函数number_over
据说效率低,个人感觉有时候也用不成。
3主要介绍第三种,任何时候都刚刚的
ALTER PROCEDURE [dbo].[P_PC_GetList]
-- Add the parameters for the stored procedure here
@Import BIT,
@CurrentPageIndex INT,
@PageSize INT,
@where NVARCHAR(1000)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE @sql NVARCHAR(4000)
IF @Import=1 BEGIN
SET @sql = 'SELECT [ID]
  ,[PCMonth]
  ,[PCCompany]
  ,[PCDepartment]
  ,[ContractNumber]
  ,[ContractName]
  ,[FirstParty]
  ,[FirstPartyID]
  ,[SignDate]
  ,[SignPersonID]
  ,[SignPerson]
  ,[ResponsiblePersonName]
  ,[ResponsiblePersonId]
  ,[ContractMoney]
  ,[Currency]
  ,[ReceivedMoney]
  ,[TransitAccount]
  ,[PCPossibility]
  ,[MonthPromisePC]
  ,[NoPromiseReason]
  ,[TypeSatus]
  ,[NotComeAmount]
  ,[IsDeleted]
  ,[Remark] FROM T_PC_PaymentCollection'
IF(@where != '')
BEGIN
SET @sql = @sql + ' where  ' + @where
END
EXEC(@sql)
END



DECLARE @PageLowerBound INT
DECLARE @PageUpperBound INT
IF @CurrentPageIndex = -1 SET @PageLowerBound = 0
ELSE SET @PageLowerBound = @PageSize * @CurrentPageIndex

SET @PageUpperBound = @PageSize - 1 + @PageLowerBound
-- Create a temp table TO store the select results
CREATE TABLE #PageIndexFor_Docu
(
IndexId int IDENTITY (0, 1) NOT NULL,
EID int
)

IF @CurrentPageIndex = -1 AND @PageSize < 2147483647
SET ROWCOUNT @PageSize
    -- Insert statements for procedure here

SET @sql = 'INSERT INTO #PageIndexFor_Docu SELECT [ID]'

IF (@where != '')
BEGIN
SET @sql = @sql + ' where  ' + @where
--Set @sql = @sql + ' where TypeSatus IN (''同步'',''保存'' ) AND ' + @where
END

EXEC (@sql)

SELECT [ID]
,[PCMonth]
,[PCCompany]
,[PCDepartment]
,[ContractNumber]
,[ContractName]
,[FirstParty]
,[FirstPartyID]
,[SignDate]
,[SignPersonID]
,[SignPerson]
,[ResponsiblePersonName]
,[ResponsiblePersonId]
,[ContractMoney]
,[Currency]
,[ReceivedMoney]
,[TransitAccount]
,[PCPossibility]
,[MonthPromisePC]
,[NoPromiseReason]
,[TypeSatus]
,[NotComeAmount]
,[IsDeleted]
,[Remark]
    FROM T_PC_PaymentCollection A
INNER JOIN #PageIndexFor_Docu PIndex
ON PIndex.EID  = A.ID 
WHERE PIndex.IndexId >= @PageLowerBound AND PIndex.IndexId <= @PageUpperBound 
ORDER BY PIndex.IndexId 

END
分享到:
评论

相关推荐

    mysql分页存储过程

    ### MySQL 分页存储过程详解 在数据库操作中,分页是一项非常常见的需求,尤其是在处理大量数据时。...对于需要频繁进行分页查询的应用场景来说,这种存储过程的设计是非常实用且高效的解决方案。

    sql分页存储过程(无论那个表,表中有多少字段都可以用这一个存储过程)

    标题“sql分页存储过程(无论那个表,表中有多少字段都可以用这一个存储过程)”明确指出这是一个适用于任何表结构的分页查询存储过程,无论表中有多少个字段,均能通过此存储过程进行高效的数据分页操作。...

    asp.net SQL存储过程分页

    总结,ASP.NET SQL存储过程分页是一个重要的数据库查询优化技术,它结合了存储过程的高效性和分页的实用性。通过创建合适的存储过程,正确配置ASP.NET的控件,以及处理好分页事件,我们可以构建出高效且用户友好的...

    存储过程分页以及实现.docx

    总的来说,存储过程的分页实现涉及数据库设计、SQL查询优化和编程技巧。对于大型数据集,有效的分页策略可以显著提升用户体验,同时减少服务器资源的消耗。这个例子展示了如何结合存储过程和C#代码来实现这一目标,...

    Oracle分页存储过程

    总的来说,"Oracle分页存储过程"是数据库开发中的一种实用工具,通过封装分页逻辑,可以简化代码、提高可维护性,并优化大量数据的查询效率。掌握这一技巧对于任何Oracle数据库开发者来说都是非常有价值的。

    SSH分页(很实用)

    PagedListHolder则是一个简单的JavaBean,可以用于在Action类中存储分页信息,然后传递到视图层。 3. **Hibernate框架中的分页** Hibernate本身提供了`Criteria`和`Query`对象的分页方法,如`setFirstResult`和`...

    oracle 分页存储过程

    本篇文章将深入探讨Oracle中的分页存储过程,以及如何利用源码和工具来实现这一功能。 在Oracle数据库中,进行分页查询通常涉及到ROWNUM伪列和子查询。ROWNUM是在数据检索时由Oracle自动生成的一个整数值,表示行的...

    分页存储过程 doc 文档

    在本案例中,所讨论的存储过程主要应用于实现数据分页功能。分页是指将查询结果分成多个页面展示,每个页面显示固定数量的记录,用户可以通过翻页来查看不同的记录集。 ### 存储过程参数说明 #### 输入参数 1. **`...

    针对SQL 2000 的分页存储过程代码分享

    总的来说,`uoSp_RecordPager`存储过程是一个实用的工具,它允许开发者在不支持直接分页语法的SQL Server 2000环境中实现灵活、高效的分页查询。通过合理的参数设置,它可以适应各种复杂的查询场景,满足多种分页...

    asp.net安全、实用、简单的大容量存储过程分页第1/2页

    在本案例中,作者提到他们基于现有的分页存储过程进行了修改,加入了输出总记录数的功能,这是为了实现更加实用的分页功能。通常,为了确保性能,大型数据集的分页并不直接返回全部数据,而是返回当前页的数据。总...

    list分页,可直接用

    在IT行业中,分页是一种常见的数据处理方式,特别是在Web应用中,当用户需要查看大量数据时,分页能有效提高用户体验。"list分页,可直接用"的标题表明这是一个无需依赖任何特定框架或插件的分页解决方案,适合那些...

    分页(sql分页基本上通用,条件和想要显示的内容只要在外边加上就可以了)

    此存储过程名为`PAGINATION_JHGL`,主要功能是根据传入的参数实现对数据库表中的数据进行分页查询。下面我们将逐一分析该过程的各个参数及其作用: 1. **@tbName**:目标表名称。 2. **@tbFields**:需要查询的字段...

    JSP精心收藏的21种分页方法

    在Web开发领域,JavaServer Pages (JSP) 是一种常用的技术,用于创建动态网页。当数据量庞大时,为了提高用户体验,通常会采用分页显示数据。...这些方法和技巧的掌握,能够帮助开发者在JSP项目中更好地实现分页功能。

    sql分页技术(三种方法)

    本文将详细介绍三种在SQL中实现分页的技术,帮助读者更好地理解和掌握这一实用技巧。 ### 第一种方法:使用NOT IN与TOP结合 这种方法的基本思路是首先从表中选择出一定数量的记录(比如前20条),然后在剩余的记录...

    asp.net access数据库分页

    在实际项目中,如果数据量较大,可能需要考虑使用支持分页的数据库系统,如SQL Server,或者采用存储过程等方式优化查询性能。 此外,还可以使用ASP.NET MVC框架中的PagedList库,简化分页的实现,提供更好的用户...

    javaweb后台数据真分页

    综上所述,这个"javaweb后台数据真分页"的例子是一个很好的学习起点,它展示了如何在JavaWeb应用中结合数据库操作实现高效、实用的分页功能。通过对`fenye1`这个文件的学习,初学者可以掌握JavaBean的使用、数据库...

    Android ListView 滑动分页

    在Android开发中,ListView是一种常用的组件,用于展示大量的列表数据。滑动分页技术是当用户滚动到底部时...总的来说,滑动分页是Android开发中常见的需求,理解和掌握这一技巧对于提升应用的性能和用户体验至关重要。

    DataList分页

    5. 存储过程或动态SQL:对于更高效的分页,可以考虑使用存储过程或动态SQL,它们能够更好地优化查询性能,特别是当数据表很大时。 6. 用户体验优化:为了提高用户体验,可以使用Ajax局部刷新技术,使得分页操作无...

    非常流行的使用的sql分页语句

    根据给定的文件信息,我们可以深入探讨SQL分页技术及其在存储过程中的应用。SQL分页是数据库查询中一个常用且重要的功能,它允许我们从大量数据中分批获取记录,这对于提高数据处理效率和用户体验至关重要。下面,...

    springboot+mybatis+easyui增删改查分页Demo

    【标题】"springboot+mybatis+easyui增删改查分页Demo"是一个基于Spring Boot、MyBatis和EasyUI实现的Web应用程序示例,主要用于演示如何在这些技术栈中进行基本的数据操作...

Global site tag (gtag.js) - Google Analytics