- 浏览: 41048 次
文章分类
最新评论
大家在开发时都会面临分页的问题,
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
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
发表评论
-
SQL索引一步到位(此文章为“数据库性能优化二:数据库表优化”附属文章之一)
2015-02-04 09:54 383SQL索引在数据库优化中 ... -
SQL中索引的原理1
2015-02-04 09:35 594(一)深入浅出理解索 ... -
数据库中的数据到C#代码中的数值要注意转换了
2015-01-26 11:03 456如下,从数据库的存储过程传值过去给C#,如果不再转换一次,C# ... -
SQL Server 删除表中重复的记录的方法记录
2015-01-20 08:38 317--delete from [T_SaleConfirmSta ... -
写sql时经常会碰到条件不定的情况,这样的技巧受用无限
2015-01-19 18:03 505写sql时经常会碰到条件不定的情况,好多兄弟都是在哪儿无穷的拼 ... -
SQL Server数据库中时间比较,这样比较准确
2015-01-19 17:56 618SQL数据库中对于时间的精确度比较做的不是很好。有时候是把值当 ... -
让ADO.NET Entity Framework支持Oracle数据库 好东西收藏了
2015-01-16 11:35 509项目需要基于.NET平台,个人的习惯是能用微软自带的就不用第三 ... -
数据库中事务使用实例
2015-01-16 11:18 8251.数据库的事务很重要,在保持数据一致性有很大的用处 US ... -
使用SqlBulkCopy导入大数据要注意
2015-01-13 14:17 570第一次用挺好,第二次就出问题了:我的表里边已经有数据,而且加了 ... -
SQL Server中查看那个进程阻塞数据库的存储过程,收藏了
2015-01-13 10:20 1718use master go alter procedu ... -
用微软提供的批量把数据导入到数据库方法SqlBulkCopy真是好用好快
2015-01-13 09:59 2596平时老是碰到把一批数据插入到数据库。通常的办法是循环一条条插进 ... -
SQL Server类型与C#类型对应关系 好东西收藏了
2015-01-13 09:14 1567SQL Server类型 C#类型 bit bool tiny ... -
报表SQL存储过程开发中十条军规
2015-01-12 15:11 792报表SQL存储过程的特 ... -
常用经典SQL语句
2015-01-09 12:41 443下列语句部分是Mssql语 ... -
收集到的SQL语句大全技巧大全
2015-01-09 10:03 609一、基础 1、说明:创建数据库 CREATE DATABAS ...
相关推荐
### MySQL 分页存储过程详解 在数据库操作中,分页是一项非常常见的需求,尤其是在处理大量数据时。...对于需要频繁进行分页查询的应用场景来说,这种存储过程的设计是非常实用且高效的解决方案。
标题“sql分页存储过程(无论那个表,表中有多少字段都可以用这一个存储过程)”明确指出这是一个适用于任何表结构的分页查询存储过程,无论表中有多少个字段,均能通过此存储过程进行高效的数据分页操作。...
总结,ASP.NET SQL存储过程分页是一个重要的数据库查询优化技术,它结合了存储过程的高效性和分页的实用性。通过创建合适的存储过程,正确配置ASP.NET的控件,以及处理好分页事件,我们可以构建出高效且用户友好的...
总的来说,存储过程的分页实现涉及数据库设计、SQL查询优化和编程技巧。对于大型数据集,有效的分页策略可以显著提升用户体验,同时减少服务器资源的消耗。这个例子展示了如何结合存储过程和C#代码来实现这一目标,...
总的来说,"Oracle分页存储过程"是数据库开发中的一种实用工具,通过封装分页逻辑,可以简化代码、提高可维护性,并优化大量数据的查询效率。掌握这一技巧对于任何Oracle数据库开发者来说都是非常有价值的。
PagedListHolder则是一个简单的JavaBean,可以用于在Action类中存储分页信息,然后传递到视图层。 3. **Hibernate框架中的分页** Hibernate本身提供了`Criteria`和`Query`对象的分页方法,如`setFirstResult`和`...
本篇文章将深入探讨Oracle中的分页存储过程,以及如何利用源码和工具来实现这一功能。 在Oracle数据库中,进行分页查询通常涉及到ROWNUM伪列和子查询。ROWNUM是在数据检索时由Oracle自动生成的一个整数值,表示行的...
在本案例中,所讨论的存储过程主要应用于实现数据分页功能。分页是指将查询结果分成多个页面展示,每个页面显示固定数量的记录,用户可以通过翻页来查看不同的记录集。 ### 存储过程参数说明 #### 输入参数 1. **`...
总的来说,`uoSp_RecordPager`存储过程是一个实用的工具,它允许开发者在不支持直接分页语法的SQL Server 2000环境中实现灵活、高效的分页查询。通过合理的参数设置,它可以适应各种复杂的查询场景,满足多种分页...
在本案例中,作者提到他们基于现有的分页存储过程进行了修改,加入了输出总记录数的功能,这是为了实现更加实用的分页功能。通常,为了确保性能,大型数据集的分页并不直接返回全部数据,而是返回当前页的数据。总...
在IT行业中,分页是一种常见的数据处理方式,特别是在Web应用中,当用户需要查看大量数据时,分页能有效提高用户体验。"list分页,可直接用"的标题表明这是一个无需依赖任何特定框架或插件的分页解决方案,适合那些...
此存储过程名为`PAGINATION_JHGL`,主要功能是根据传入的参数实现对数据库表中的数据进行分页查询。下面我们将逐一分析该过程的各个参数及其作用: 1. **@tbName**:目标表名称。 2. **@tbFields**:需要查询的字段...
在Web开发领域,JavaServer Pages (JSP) 是一种常用的技术,用于创建动态网页。当数据量庞大时,为了提高用户体验,通常会采用分页显示数据。...这些方法和技巧的掌握,能够帮助开发者在JSP项目中更好地实现分页功能。
本文将详细介绍三种在SQL中实现分页的技术,帮助读者更好地理解和掌握这一实用技巧。 ### 第一种方法:使用NOT IN与TOP结合 这种方法的基本思路是首先从表中选择出一定数量的记录(比如前20条),然后在剩余的记录...
在实际项目中,如果数据量较大,可能需要考虑使用支持分页的数据库系统,如SQL Server,或者采用存储过程等方式优化查询性能。 此外,还可以使用ASP.NET MVC框架中的PagedList库,简化分页的实现,提供更好的用户...
综上所述,这个"javaweb后台数据真分页"的例子是一个很好的学习起点,它展示了如何在JavaWeb应用中结合数据库操作实现高效、实用的分页功能。通过对`fenye1`这个文件的学习,初学者可以掌握JavaBean的使用、数据库...
在Android开发中,ListView是一种常用的组件,用于展示大量的列表数据。滑动分页技术是当用户滚动到底部时...总的来说,滑动分页是Android开发中常见的需求,理解和掌握这一技巧对于提升应用的性能和用户体验至关重要。
5. 存储过程或动态SQL:对于更高效的分页,可以考虑使用存储过程或动态SQL,它们能够更好地优化查询性能,特别是当数据表很大时。 6. 用户体验优化:为了提高用户体验,可以使用Ajax局部刷新技术,使得分页操作无...
根据给定的文件信息,我们可以深入探讨SQL分页技术及其在存储过程中的应用。SQL分页是数据库查询中一个常用且重要的功能,它允许我们从大量数据中分批获取记录,这对于提高数据处理效率和用户体验至关重要。下面,...
【标题】"springboot+mybatis+easyui增删改查分页Demo"是一个基于Spring Boot、MyBatis和EasyUI实现的Web应用程序示例,主要用于演示如何在这些技术栈中进行基本的数据操作...