论坛首页 Java企业应用论坛

原创:也谈SqlServer分页

浏览 11057 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-12-17  

今天也来谈谈SqlServer的分页:

  1. 使用游标分页。
  2. 使用top分页。
  3. 使用ROW_NMUBER()分页(SQLServer 2005)。

对应表:

sql 代码
  1. if exists (select name from sysobjects where name='produce' and type='u')   
  2. drop table produce   
  3. go   
  4.   
  5. create table produce(   
  6.    p_id varchar(64) primary key,   
  7.   p_name varchar(50),   
  8.   p_price float,   
  9.   p_path varchar(100)   
  10. )   
  11. go   
以下是使用top分页的存储过程:
sql 代码
  1. if exists(select name from sysobjects where name='produce_proc' and type='p')   
  2. drop procedure produce_proc   
  3. go   
  4. create procedure produce_proc   
  5. @pageSize int,      --每页的记录数   
  6. @index int          --从第几条记录开始   
  7. as  
  8.   begin  
  9.   set nocount on       
  10. declare @sql nvarchar(3000)   
  11. if @index>@pageSize   
  12.      begin  
  13.   set @index = @index - @pageSize   
  14.        set @sql='select top '+cast (@pageSize as varchar(8))+' * from produce where p_id>(   
  15.           select max(p_id) from (select top '+cast (@index as varchar(8))+' p_id from produce order by p_id)    
  16.         as t)   
  17.         order by p_id'   
  18.   end  
  19. else  
  20.   begin  
  21.       set @sql = 'select top '+cast (@pageSize as varchar(8))+'* from produce order by p_id'   
  22.   end  
  23. execute sp_executesql @sql   --调用系统存储过程忧化动态执行效率    
  24.  set nocount off  
  25. end  

 

ROW_NUMBER()分页:

sql 代码
  1. SELECT * FROM (SELECT p_id,p_name,p_path,p_price,ROW_NUMBER() OVER (ORDER BY p_id) AS 'RowNumber' FROM produce) a  WHERE a.RowNumber BETWEEN 开始记录 AND 结束记录数  

改日再贴三种方式的性能测试文章

   发表时间:2007-12-25  
1、没有说明数据库版本,ROW_NMUBER是sql server2005的吧
2、如果是符合主键,用max、not in怎么处理
3、如果是符合主键、或者排序字段不是主键,用max、not in怎么处理

最近在写个物理级的通用分页程序,db2、oracle、mysql的都很好些,就是sql server的有些啥,死板
0 请登录后投票
   发表时间:2008-01-05  
很是纳闷,后面写的挺长,但是没有显示,
0 请登录后投票
   发表时间:2008-01-17  
受教了,对heibernate不是很熟,正在学习中.
0 请登录后投票
   发表时间:2008-01-29  
请问这个怎么能用到hibernate呢?
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics