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

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条数据一样!

时间: 2024-11-04 23:28:05

一个高效的数据分页的存储过程的相关文章

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

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

SQL Server 2005: 利用新的ranking函数实现高效的数据分页操作

server|分页|函数|数据 最近MSDN Magazine上的一篇文章10 Tips for Writing High-Performance Web Applications提到了有效的数据分页技术对提高ASP .NET程序性能的重要性:并给出了一个实现数据分页的stored procedure的例子,抄录如下: CREATE PROCEDURE northwind_OrdersPaged ( @PageIndex int, @PageSize int ) AS BEGIN DECLARE

如何构建一个高效的数据科学部门

这篇文章在Hacker News转载后产生很热烈的讨论,主要是从工程师的角度来看问题,讨论了很多有关人员管理和团队分工等一些很现实的问题.不是所有人都同意文中的观点和解决方案,也有很多人写出了自己的经历来佐证作者的想法.争议主要在于ETL工程师的工作价值以及不同职责间的分工问题. "您的团队和贵公司数据科学家之间关系如何?"我在面试数据平台工程师时,这绝对是我听到的最多的一个问题.这是个好问题,提问者可以有效的衡量这个新职位的好坏.我很乐于回答这个问题.不过我宁愿这个问题不出现,因为面

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

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

php高效获取数据分页

mysql.php 获取数据库中的记录,完全个人经验总结,仅供参考! <?php /** *PHP+MYSQL数据库基本功能 *http://blog.csdn.net/yown */ ############################################ #获取序列ID ############################################ function getSequence() { $sql = "update sequence set id=

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

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

ASP.net 2.0 自定义控件的开发之数据分页 第一章

asp.net|分页|控件|数据  本文将向大家介绍使用ASP.net 2.0 开发自定义的数据分页控件 数据分页的好处 1.减少网络流量 2.提高运行效率在大数据量时,数据分页是一个必须面对的现实,没有哪个客户愿意花上几分钟或更多的时间来等待.数据分页也有多种方式比如内存分页 SQL Server 存储过程分页等,这里将向大家介绍的是 SQL Server 存储过程分页方式,并结合ASP.net 2.0 的来编写一个通用的数据分页控件.本文使用的存储过程来自 http://www.codepr

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

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

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

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