现在的位置: 首页 > 综合 > 正文

我认为最快的存储过程分页

2011年05月12日 ⁄ 综合 ⁄ 共 965字 ⁄ 字号 评论关闭
我在项目里面如果使用存储过程分页,都是这样做的。

 1
 2
 3
 4
 5
 6
 7CREATE      PROCEDURE page
 8 @PageIndex    int ,                                  /*当前页数*/
 9 @PageSize      int                                   /*每页大小*/
10 AS
11  
12
13IF @PageIndex > 0
14 BEGIN
15     DECLARE @PageLowerBound int 
16     DECLARE @StartID int
17     DECLARE @sql varchar(225)
18
19     SET @PageLowerBound = @PageSize * (@PageIndex-1)
20    
21     SET ROWCOUNT @PageLowerBound 
22    
23     SELECT  @StartID = [id]      FROM table     ORDER BY id desc
24     
25     SET ROWCOUNT 0
26     
27    
28     SET @sql='select top '+str(@PageSize+' COLUMNS from table where      and [id]>'+ str(@StartID+' ORDER BY id '     
29
30     EXEC(@sql)
31 END 
32

如果大家不喜欢用游标,那就将下面部分改为

1SET ROWCOUNT @PageLowerBound 
2    
3     SELECT  @StartID = [id]      FROM table     ORDER BY id desc
4    
5     SET ROWCOUNT 0

不使用游标的方法

1  
2    set sql='SELECT top '  +str(PageLowerBound)+   ' @startID=[id] FROM table     ORDER BY id desc'
3exec(sql)
4

 

抱歉!评论已关闭.