最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SQL Server 存儲(chǔ)過(guò)程的分頁(yè)

 更新時(shí)間:2006年08月18日 00:00:00   作者:  
建立表: 

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 

插入數(shù)據(jù):(2萬(wàn)條,用更多的數(shù)據(jù)測(cè)試會(huì)明顯一些) 
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 

------------------------------------- 

分頁(yè)方案一:(利用Not In和SELECT TOP分頁(yè)) 
語(yǔ)句形式: 
SELECT TOP 10 * 
FROM TestTable 
WHERE (ID NOT IN 
(SELECT TOP 20 id 
FROM TestTable 
ORDER BY id)) 
ORDER BY ID 

SELECT TOP 頁(yè)大小 * 
FROM TestTable 
WHERE (ID NOT IN 
(SELECT TOP 頁(yè)大小*頁(yè)數(shù) id 
FROM 表 
ORDER BY id)) 
ORDER BY ID 

------------------------------------- 

分頁(yè)方案二:(利用ID大于多少和SELECT TOP分頁(yè)) 
語(yǔ)句形式: 
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 頁(yè)大小 * 
FROM TestTable 
WHERE (ID > 
(SELECT MAX(id) 
FROM (SELECT TOP 頁(yè)大小*頁(yè)數(shù) id 
FROM 表 
ORDER BY id) AS T)) 
ORDER BY ID 

------------------------------------- 

分頁(yè)方案三:(利用SQL的游標(biāo)存儲(chǔ)過(guò)程分頁(yè)) 
create procedure XiaoZhengGe 
@sqlstr nvarchar(4000), --查詢(xún)字符串 
@currentpage int, --第N頁(yè) 
@pagesize int --每頁(yè)行數(shù) 
as 
set nocount on 
declare @P1 int, --P1是游標(biāo)的id 
@rowcount int 
exec sp_cursoropen @P1 output,@sqlstr,@scrollopt=1,@ccopt=1,@rowcount=@rowcount output 
select ceiling(1.0*@rowcount/@pagesize) as 總頁(yè)數(shù)--,@rowcount as 總行數(shù),@currentpage as 當(dāng)前頁(yè) 
set @currentpage=(@currentpage-1)*@pagesize+1 
exec sp_cursorfetch @P1,16,@currentpage,@pagesize 
exec sp_cursorclose @P1 
set nocount off 

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

通過(guò)SQL 查詢(xún)分析器,顯示比較:我的結(jié)論是: 
分頁(yè)方案二:(利用ID大于多少和SELECT TOP分頁(yè))效率最高,需要拼接SQL語(yǔ)句 
分頁(yè)方案一:(利用Not In和SELECT TOP分頁(yè)) 效率次之,需要拼接SQL語(yǔ)句 
分頁(yè)方案三:(利用SQL的游標(biāo)存儲(chǔ)過(guò)程分頁(yè)) 效率最差,但是最為通用 

在實(shí)際情況中,要具體分析。 

相關(guān)文章

最新評(píng)論

信丰县| 康定县| 岢岚县| 阿克苏市| 元谋县| 张家口市| 宁武县| 晋城| 壶关县| 密云县| 台东市| 通渭县| 剑川县| 荆州市| 临泉县| 九江县| 昌邑市| 牡丹江市| 建平县| 疏附县| 东兰县| 从化市| 嘉善县| 三门县| 沙湾县| 濮阳市| 康平县| 景洪市| 安图县| 元朗区| 砚山县| 微山县| 托克逊县| 泸溪县| 盐山县| 玉林市| 昔阳县| 柳江县| 花莲市| 榆树市| 蕲春县|