欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

SqlServer 數據分頁的存儲過程

系統 2243 0
建立表:

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
@
sql str nvarchar(4000), --
查詢 字符
@currentpage int,?--
N
@pagesize int?--
每頁行數
as
set nocount on
declare @P1 int,?--P1
是游標的 id
?@rowcount int
exec sp_cursoropen @P1 output,@
sql str,@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

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

通過 SQL 查詢分析器,顯示比較:我的結論是 :
分頁方案二: ( 利用 ID 大于多少和 SELECT TOP 分頁)效率最高,需要拼接 SQL 語句

分頁方案一: ( 利用 Not In SELECT TOP 分頁 )?? 效率次之,需要拼接 SQL 語句
分頁方案三: ( 利用 SQL 的游標存儲過程分頁 )??? 效率最差,但是最為通用

在實際情況中,要具體分析。

?

以下是另一個存儲過程的例子.

通常用普通的 SQL 語句查詢數據,在數據量少的情況下速度上沒什么感覺,一旦數居量很大之后,速度會明顯變慢,因為大量的數據在網絡中傳輸會花掉不少的時間,如果使用了分頁查詢數據,只反回有用的數據,把不需要的數據排除后,傳輸速度會快很多,如下是一個 SQL 分頁的存儲過程,本過程是以 SQL 自帶的 Northwind 數據庫為例寫的,可以根據自已的需要隨意更改

CREATE
PROCEDURE [GetCustomersDataPage]
@PageIndex
INT , -- 頁號

@PageSize
INT , -- 頁數
@RecordCount
INT OUT , -- 記錄數
@PageCount
INT OUT -- 頁數
AS
SELECT @RecordCount = COUNT (*) FROM Customers
SET @PageCount = CEILING
(@RecordCount * 1.0 / @PageSize)

DECLARE @SQLSTR NVARCHAR
(1000)

IF @PageIndex = 0 OR
@PageCount <= 1
SET @SQLSTR = 'SELECT TOP ' + STR ( @PageSize )+ ' CustomerID, CompanyName,Address,Phone FROM Customers ORDER BY CustomerID DESC'


ELSE IF @PageIndex = @PageCount - 1
SET @SQLSTR = ' SELECT * FROM ( SELECT TOP ' + STR ( @RecordCount - @PageSize * @PageIndex )+ ' CustomerID, CompanyName,Address,Phone FROM Customers ORDER BY CustomerID ASC ) TempTable ORDER BY CustomerID DESC'


ELSE
SET @SQLSTR = ' SELECT TOP ' + STR ( @PageSize )+ ' * FROM ( SELECT TOP ' + STR ( @RecordCount - @PageSize * @PageIndex )+ ' CustomerID, CompanyName,Address,Phone FROM Customers ORDER BY CustomerID ASC ) TempTable ORDER BY CustomerID DESC'


EXEC (@SQLSTR)

GO

SqlServer 數據分頁的存儲過程


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 伊人导航 | 日韩电影一区二区三区 | 天天色天天操天天射 | 91久久夜色精品国产九色 | 一区二区三区四区在线视频 | 成人精品久久久 | 好吊日免费视频 | 久久久久久久久淑女av国产精品 | 日韩 欧美 国产 亚洲 中文 | 日韩hd| 一级黄色绿像片 | 国产全肉乱妇杂乱视频 | 欧美日韩在线一区二区 | 抱着cao才爽免费观看 | 久久久91 | 日本粉嫩一区二区三区视频 | 婷婷资源| 中文字幕三区 | 精品欧美一区二区在线观看 | 操人视频免费 | 亚洲一区二区三区视频 | 久草在线成人 | 国产精品视频一区二区三区 | 日本一级毛片视频 | 亚洲毛片视频 | 完全免费在线视频 | 杏导航aⅴ福利网站 | bt日韩| 欧美一级特黄aaaaaa在线看首页 | 亚洲a网| 精品在线视频一区 | 久久国产免费福利永久 | 欧美激情综合亚洲五月蜜桃 | 国产电影一区二区三区 | 国产精品久久久久久久免费大片 | 精品一区二区久久久久久按摩 | 免费在线观看黄 | 国产黄在线观看免费观看软件视频 | 丝袜美腿一区 | 久草色香蕉 | 亚洲欧美影视 |