三中SQL 分頁方法效率分析

三種SQL分頁法效率分析

表中主鍵必須爲標識列,[ID] int IDENTITY (1,1)

1.分頁方案一:(利用Not In和SELECT TOP分頁)

 語句形式:利用Not In和SELECT TOP分頁) 效率中,需要拼接SQL語句

  SELECT TOP 10 * FROM  TestTable WHERE (Id  NOT  IN (SELECT  TOP  20    id  FROM        TestTable ORDER BY id )) ORDER BY ID

2.分頁方案二:(利用ID大於多少和SELECT TOP分頁)

  語句形式:利用ID大於多少和SELECT TOP分頁)效率最高,需要拼接SQL語句

  SELECT TOP 10 * FROM  TestTable WHERE (ID  > (SELECT    MAX(id)    FROM (SELECT  TOP    20  id FROM    TestTable ORDER BY id) AST))

3.分頁方案三:(利用SQL的遊標存儲過程分頁)

語句形式:利用SQL的遊標存儲過程分頁) 效率最差,但是最爲通用

  create procedure SqlPager

@sqlstr nvarchar(4000),                --查詢字符串

@currentpage int,                      --第N頁

@pagesize int                        --每頁行數

as

set nocount on

declare @P1 int,                      --P1是遊標的id

  @rowcount int

exec sp_cursoropen @P1 output,@sqlstr,@scrollopt=1,@ccopt=1,@rowcount=@rowcount output

select ceiling(1.0*@rowcount/@pagesize) as 總頁數--,@rowcount as 總行數,@currentpage as 當前頁

set @currentpage=(@currentpage-1)*@pagesize+1

exec sp_cursorfetch @P1,16,@currentpage,@pagesize

exec sp_cursorclose @P1

set nocount off

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章