自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

SQL Server 存儲過程的分頁

數據庫 SQL Server
SQL Server數據庫應用很廣泛的數據庫管理系統(tǒng),在SQL Server數據庫存儲過程中會涉及到分頁問題,本文將會為大家詳細介紹關于SQL Server存儲分頁的問題。

導讀:SQL Server 存儲過程分頁,有很多人不是很了解,本文在這里就為大家詳細講解這方面的知識,希望能夠幫助到大家。

  建立表:

CREATE TABLE [TestTable] (
[ID] [int] IDENTITY (1, 1) NOT NULL ,
[FirstName] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
[LastName] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
[Country] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Note] [nvarchar] (2000) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO


  插入數據:(2萬條,用更多的數據測試會明顯一些)

SET IDENTITY_INSERT TestTable ON
declare @i int
set @i=1
while @i<=20000
begin
insert into TestTable([id], FirstName, LastName, Country,Note)
values(@i, 'FirstName_XXX','LastName_XXX','Country_XXX','Note_XXX')
set @i=@i+1
end
SET IDENTITY_INSERT TestTable OFF


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

  語句形式:

SELECT TOP 10 * FROM TestTable
WHERE (ID NOT IN
(SELECT TOP 20 id
FROM TestTable
ORDER BY id))
ORDER BY ID
SELECT TOP 頁大小 * FROM TestTable
WHERE (ID NOT IN
(SELECT TOP 頁大小*頁數 id
FROM 表
ORDER BY id))
ORDER BY ID


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

  語句形式:

SELECT TOP 10 * FROM TestTable
WHERE (ID >
(SELECT MAX(id)
FROM (SELECT TOP 20 id
FROM TestTable
ORDER BY id) AS T))
ORDER BY ID
SELECT TOP 頁大小 * FROM TestTable
WHERE (ID >
(SELECT MAX(id)
FROM (SELECT TOP 頁大小*頁數 id
FROM 表
ORDER BY id) AS T))
ORDER BY ID


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

create procedure XiaoZhengGe
@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


  其它的方案:如果沒有主鍵,可以用臨時表,也可以用方案三做,但是效率會低。建議優(yōu)化的時候,加上主鍵和索引,查詢效率會提高。

  通過SQL 查詢分析器,顯示比較:我的結論是:

  分頁方案二:(利用ID大于多少和SELECT TOP分頁)效率最高,需要拼接SQL語句

  分頁方案一:(利用Not In和SELECT TOP分頁) 效率次之,需要拼接SQL語句

  分頁方案三:(利用SQL的游標存儲過程分頁) 效率最差,但是最為通用

上文中為大家介紹了這幾種方案,當然,這些方案并不是萬能的,所以大家還是要根據具體的情況案例來采用合適的方案,這里我只是為大家總結了一下經驗,便于大家在不懂的時候參考,大家就各取所需吧。

【編輯推薦】

  1. 使用存儲過程都有哪些益處
  2. 解決SQL Server虛擬內存不足情況
  3. SQL Server 2008空間數據應用系列八:基于Bing Maps(Silverlight)的空間數據存儲
責任編輯:迎迎 來源: 百度
相關推薦

2011-03-28 10:46:36

sql server存儲分頁

2010-09-14 10:47:45

sql server存

2010-06-30 14:36:49

SQL Server

2010-06-18 10:34:38

SQL Server

2011-06-17 17:37:16

JavaSQL Server

2010-11-10 15:16:14

Sql Server分

2010-09-03 15:08:03

SQLselect語句

2010-07-15 12:38:14

SQL Server存

2011-08-29 10:55:03

SQL Server分頁存儲過程優(yōu)化效率分

2009-08-06 16:44:06

2010-11-10 13:03:15

SQL Server存

2011-08-09 10:21:55

SQL Server存儲過程分頁

2010-11-12 09:46:55

Sql Server存

2010-09-14 10:16:57

sql server

2011-08-16 16:59:58

PLSQL分頁存儲過程Java

2010-09-14 10:36:23

sql server存

2012-05-10 11:17:23

JavaSQL Server

2011-03-31 10:38:28

SQL Server編寫優(yōu)化

2010-11-10 15:47:59

2010-11-29 09:12:46

sybase分頁存儲過
點贊
收藏

51CTO技術棧公眾號