发布一个高效的数据分页的存储过程 可以轻松应付百万数据

存储过程|分页|数据

CREATE PROCEDURE pageTest  --用于翻页的测试
--需要把排序字段放在第一列

 (
  @FirstID nvarchar(20)=null,  --当前页面里的第一条记录的排序字段的值
  @LastID nvarchar(20)=null,  --当前页面里的最后一条记录的排序字段的值
  @isNext bit=null,    --true 1 :下一页;false 0:上一页
  @allCount int output,   --返回总记录数
  @pageSize int output,   --返回一页的记录数
  @CurPage int     --页号(第几页)0:第一页;-1最后一页。
  )

AS

if @CurPage=0
 begin
  --统计总记录数
  select @allCount=count(ProductId) from Product_test
  
  set @pageSize=10
  --返回第一页的数据
  select top 10
   ProductId,
   ProductName,
   Introduction  
   from Product_test order by ProductId
 end

else if @CurPage=-1

 select * from
  (select top 10 ProductId,
   ProductName,
   Introduction

  from Product_test order by ProductId desc ) as aa 
  order by ProductId
else

 begin
  if @isNext=1
   --翻到下一页
   select top 10 ProductId,
   ProductName,
   Introduction
  from Product_test where ProductId > @LastID order by ProductId
  
  
  else
   --翻到上一页
   select * from
    (select top 10 ProductId,
   ProductName,
   Introduction
  from Product_test where ProductId < @FirstID  order by ProductId desc) as bb order by ProductId
 end
 

百万数据翻页就像100条数据一样!

http://www.jyklzz.net/web/jyk/index.asp 这里有详细的说明

 

 

时间: 2024-10-18 07:40:00

发布一个高效的数据分页的存储过程 可以轻松应付百万数据的相关文章

发布一个高效的JavaScript分析、压缩工具 JavaScript Analyser_javascript技巧

发布一个高效的JavaScript分析.压缩工具 JavaScript Analyser 先发一段脚本压缩示例,展示一下JSA语法压缩和优化功能. 复制代码 代码如下: try {         //xxxx();     }     catch (e) {         yyyy();         function f1() {         }     }     finally {         zzzz();     }     function f2(var1) {    

一个高效的数据分页的存储过程

CREATE PROCEDURE pageTest  --用于翻页的测试--需要把排序字段放在第一列  (  @FirstID nvarchar(20)=null,  --当前页面里的第一条记录的排序字段的值  @LastID nvarchar(20)=null,  --当前页面里的最后一条记录的排序字段的值  @isNext bit=null,    --true 1 :下一页:false 0:上一页  @allCount int output,   --返回总记录数  @pageSize i

一个将数据分页的存储过程

存储过程|分页|数据 CREATE PROCEDURE sp_page  @tb         varchar(50), --表名  @col        varchar(50), --按该列来进行分页  @coltype    int,         --@col列的类型,0-数字类型,1-字符类型,2-日期时间类型  @orderby    bit,         --排序,0-顺序,1-倒序  @collist    varchar(800),--要查询出的字段列表,*表示全部字段

asp.net 数据访问层 存储过程分页语句_实用技巧

所以最好在数据访层分页,如果这样就要使用存储过程来分页.以下是以pubs 数据库中的employee表为例来进行数据分页的存储过程,你可以参考它根据实际情况来创建自己的存储过程. 注:@pageindex 数据页的索引,@dataperpage 每页的记录数目,@howmanyrecords 用来获取总的记录数. 复制代码 代码如下: create proc getdata @pageindex int,@dataperpage int,@howmanyrecords int output as

数据表每天五千四百万数据,,如何汇总

问题描述 数据表table1每天五千四百万数据,十张分表(或者五十张分表),目前还未确定分表数,数据量是确定了,根据表中四个字段(c1,c2,c3,c4)汇总,四个字段相同就可合为一条,累加金额.目前的处理方式是使用java,不考虑存储过程(公司限制,分表太多,存储过程不利于维护)方案一,在内存中计算判断,累加,在内存中保存汇总结果,因为数据量太大,不是很合适.方案二,批量取出(如五千条),一批批汇总,将结果插入临时表中.再进行汇总.方案三,将四个字段的某个字段作为分表维度,这样子的结果就是,每

一个高效简洁的Struts分页方法

分页 在网上看了几个Structs分页,感觉不是很完善,于是根据自己的经验,写了一个相对高效简洁的分页方法.由于本人水平有限,如果大家有什么更好的想法,欢迎不吝赐教. 一. 开发环境 我的开发环境是:JBuilder x + Weblogic 8.1 + Oracle 9i + Windows 2003 ,如果朋友们的开发环境不一样亦无妨. 二.开发思路 既然讲的是Struts,那自然离不了MVC,分页显示也是如此. 1. 建立数据库和对应的表,本例的表是TCertificate. 2. 建立适

一个简单的oracle分页存储过程的实现和调用

oracle|存储过程|分页|oracle|存储过程|分页 在看了众多的分页存储过程以后发现都是针对sqlserver的,而没有oracle的,因此想写一个关于oracle的存储过程,因为我用到的数据库是oracle.---------------------------------------------------------------------------------------------------------------------------------------------

asp.net 数据分页控件(不用存储过程)

asp教程.net 数据分页控件(不用存储过程) 本分页控件原理 分页的方法很多,有用存储过程的,有不用存储过程的,还有在c#中用datagridview的虚拟模式的,目的只有一个,对大数据量进行处理,让用户体验得到提高,软件速度得到提升.本分页控件主要是用了下面的sql语句,我相信你能看懂的,存储过程分页也是用类似的sql代码:    1 /*tablename           :表名            如:tbtestdata  2   sqlwherestatement   :sq

sql 通用高效分页代码(存储过程是带有sql注入)(1/2)

sql 通用高效分页代码(存储过程是带有sql注入) 大家可以看到上面的存储过程中是通过一些步骤最终拼接成一个sql字符串,然后通过exec执行这个串得到分页的结果. 我们假定要做一个这样的查询,通过用户名username模糊查询用户,为了叙述方便,便于理解我们只考虑取第一页的情况,取出存储过程中取第一页的拼串行如下: 为了便于说明问题,我们可以假定@pagesize为20,@strgetfields为 '*',@tblname为useraccount,@strorder为' order by