create
procedure p_qcd_paginationcursor
@sql
nvarchar(
4000),
--要執行的sql語句
@currentpage
int=
1, --
要顯示的頁碼
@pagesize
int=
10,
--每頁的大小
@pagecount
int=
0 out,
--總頁數
@recordcount
int=
0 out
--總記錄數
asset nocount
ondeclare
@cursor
int--
cursor 是游標的id
declare
@timediff
datetime
--耗時測試時間差 cn-web.com提供
select
@timediff
=getdate()
exec sp_cursoropen
@cursor output,
@sql,
@scrollopt=1,
@ccopt=1,
@rowcount
=@pagecount output
select
@recordcount
=@pagecount
select
@pagecount
=ceiling(
1.0*@pagecount
/@pagesize) ,
@currentpage
=( @currentpage-1)
*@pagesize+1
select
@pagecount,
@currentpage
exec sp_cursorfetch
@cursor ,
16,@currentpage,
@pagesize
exec sp_cursorclose
@cursor
select
datediff(ms,
@timediff,
getdate())
as 耗時
go
此方案所說是微軟沒有公開的游標分頁,剛開始懷疑游標分頁肯定浪費效能,不過經過詳細測試後,發現微軟就是微軟,不管如何測試,不管條件如何複雜,資料量再大,效能一直保持最強勁。
微軟乙個未公開的BUG
前段時間客戶打 給我,說自從公司office與檔案伺服器公升級後,許可權完全亂套了,開始還以為是客戶未正確設定許可權而造成,今天有空來研究了一下,原來一切都是微軟的錯。問題描述 檔案伺服器配置 windows server 2008 r2,客戶端使用office 2007 office 2010 故...
利用SQL未公開的儲存過程實現分頁
if exists select from dbo.sysobjects where id object id n dbo p splitpage andobjectproperty id,n isprocedure 1 drop procedure dbo p splitpage go 利用sql...
利用SQL未公開的儲存過程實現分頁
利用sql未公開的儲存過程實現分頁 ifexists select from dbo.sysobjects where id object id n dbo p splitpage andobjectproperty id,n isprocedure 1 drop procedure dbo p s...