- 浏览: 38877 次
文章分类
最新评论
大家在开发时都会面临分页的问题,
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 343SQL索引在数据库优化中 ... -
SQL中索引的原理1
2015-02-04 09:35 566(一)深入浅出理解索 ... -
数据库中的数据到C#代码中的数值要注意转换了
2015-01-26 11:03 427如下,从数据库的存储过程传值过去给C#,如果不再转换一次,C# ... -
SQL Server 删除表中重复的记录的方法记录
2015-01-20 08:38 284--delete from [T_SaleConfirmSta ... -
写sql时经常会碰到条件不定的情况,这样的技巧受用无限
2015-01-19 18:03 462写sql时经常会碰到条件不定的情况,好多兄弟都是在哪儿无穷的拼 ... -
SQL Server数据库中时间比较,这样比较准确
2015-01-19 17:56 562SQL数据库中对于时间的精确度比较做的不是很好。有时候是把值当 ... -
让ADO.NET Entity Framework支持Oracle数据库 好东西收藏了
2015-01-16 11:35 479项目需要基于.NET平台,个人的习惯是能用微软自带的就不用第三 ... -
数据库中事务使用实例
2015-01-16 11:18 7911.数据库的事务很重要,在保持数据一致性有很大的用处 US ... -
使用SqlBulkCopy导入大数据要注意
2015-01-13 14:17 519第一次用挺好,第二次就出问题了:我的表里边已经有数据,而且加了 ... -
SQL Server中查看那个进程阻塞数据库的存储过程,收藏了
2015-01-13 10:20 1672use master go alter procedu ... -
用微软提供的批量把数据导入到数据库方法SqlBulkCopy真是好用好快
2015-01-13 09:59 2535平时老是碰到把一批数据插入到数据库。通常的办法是循环一条条插进 ... -
SQL Server类型与C#类型对应关系 好东西收藏了
2015-01-13 09:14 1519SQL Server类型 C#类型 bit bool tiny ... -
报表SQL存储过程开发中十条军规
2015-01-12 15:11 739报表SQL存储过程的特 ... -
常用经典SQL语句
2015-01-09 12:41 417下列语句部分是Mssql语 ... -
收集到的SQL语句大全技巧大全
2015-01-09 10:03 578一、基础 1、说明:创建数据库 CREATE DATABAS ...
相关推荐
在“实用技巧程序”目录中放置的是本书精选的实用例子程序,在此目录中 放置的子目录根据本章的节数来编号,同时,以程序实现的功能为名称。如:2.3 高级搜索,表示在该目录下放置了实现高级搜索的JSP程序代码。 ...
分页存储过程:排序反转分页法 优化后的通用分页存储过程 sql语句 一些Select检索高级用法 SQL server 2005中新增的排序函数及应用 根据基本表结构及其数据生成 INSERT ... 的 SQL 简便的MS SQL 数据库 表内容 脚本 ...
4.2.5 SQL Server存储过程编程经验技巧 4.3 成批更新(BatchedUpdate) 4.3.1 成批更新所使用的对象 4.3.2 使用成批更新的实例 4.4 行集合对象 4.4.1 设计时行集合 4.4.2 运行时行集合 4.4.3 非标准JDBC API...
此外,这个系统还涉及到了一些常用的Web开发技术和技巧,如表单验证、分页查询、文件上传下载等,对于初学者来说,这是一个很好的实践项目。总之,这个130226.rar压缩包为计算机专业的学生和开发者提供了一个很好的...
<br> 光盘目录具体结构如下: <br>├─实用技巧程序 │ ├─2.1 Cookie有效时间设置 │ ├─2.2 分页显示 │ ├─2.3 高级搜索 │ ├─2.4 记录的修改 │ ├─2.5 会员登录 │ ├─2.6 ...
4.1.7 存储过程 4.1.8 出错处理 4.2 SQL Server数据库的相关知识 4.3 Oracle数据库相关知识 4.4 本章小结 第5章 文件处理与数据存储 5.1 文件系统处理 5.1.1 打开文件 5.1.2 关闭文件 5.1.3 显示文件内容 5.1.4 从...
实例244 将文本文件中数据存储到数据库中 316 4.5 文件的压缩与解压 318 实例245 PHP中压缩RAR文件 319 实例246 PHP中将上传文件转换成RAR文件 320 实例247 PHP中对RAR文件进行解压 321 实例248 PHP中压缩ZIP文件 ...
实例244 将文本文件中数据存储到数据库中 316 4.5 文件的压缩与解压 318 实例245 PHP中压缩RAR文件 319 实例246 PHP中将上传文件转换成RAR文件 320 实例247 PHP中对RAR文件进行解压 321 实例248 PHP中压缩ZIP文件 ...
我们认为“简单就是美”,因此一直以来,科汛开发人员在开发过程中无处不充分考虑用户的使用习惯,尽最大可能降低用户的使用门槛,让用户关注于内容维护本身, 而不需要投入过多的时间来学习系统的使用技巧,在细节...
本书共分23章,内容涵盖了Windows操作系统的基本原理、NT驱动程序与WDM驱动程序的构造、驱动程序中的同步异步处理方法、驱动程序中即插即用功能、驱动程序的各种调试技巧等。同时,还针对流行的PCI驱动程序、USB驱动...
个实例,每个实例都突出实用性,绝大部分实例都体现了PHP编程人员在实际项目开发过程中总结出的经验技巧。 《PHP程序开发范例宝典》内容充实,实例丰富,特别适于PHP编程人员和广大计算机爱好者学习开发使用,也...