日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

毫秒级百万数据分页存储过程

發(fā)布時(shí)間:2023/12/10 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 毫秒级百万数据分页存储过程 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

然后創(chuàng)建分頁存儲(chǔ)過程;這個(gè)是基于SQL 2005 的ROW_NUMBER的, SQL 2000 不適用; SQL 2008 我沒有安裝,所以也沒有測(cè)試過!估計(jì)應(yīng)該可以運(yùn)行.

?2種算法可以選擇 1. 使用 ?BETWEEN ? ; ?2. ?TOP ?; 代碼中已經(jīng)注釋了.

我測(cè)試了一下2種方法基本沒有什么區(qū)別;代碼如下:

?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 USE [DATA_TEMP] GO /****** 對(duì)象:? StoredProcedure [dbo].[im531_Page]??? 腳本日期: 11/26/2010 10:52:35 ******/ SET?ANSI_NULLS ON GO SET?QUOTED_IDENTIFIER ON GO -- ============================================= -- Author:????? im531 -- Create date: 2010-10-25 -- Description: SQL 2005 ROW_NUMBER 分頁 -- Modify Date: 2010-10-26 -- ============================================= CREATE?PROCEDURE?[dbo].[im531_Page] ????@TabeNameAS?NVARCHAR(50), ????@FieldsAS?NVARCHAR(1024), ????@SearchWhereAS?NVARCHAR(1024), ????@OrderFieldsAS?NVARCHAR(1024), ????@pageNumberAS?INT, ????@pageAS?INT AS BEGIN ????SET?NOCOUNTON; ????DECLARE?@sqlTypeAS?TINYINT ????SET?@sqlType = 0? -- 0 BETWEEN?? 1 TOP ????DECLARE?@sqlAS?NVARCHAR(MAX) ????IF @SearchWhere <> ''?SET?@SearchWhere = ' WHERE '?+ @SearchWhere ????IF @page < 2 SET?@page = 1 ????IF @page = 1 ????????BEGIN ????????????SET?@sql = 'SELECT TOP '?+CONVERT(NVARCHAR(20),@pageNumber) + ' '?+ @Fields ????????????????+'FROM ['?+ @TabeName + '][a] WITH(NOLOCK) '?+ @SearchWhere + ' ORDER BY '?+ @OrderFields ????????END ????ELSE ????????BEGIN ????????????--臨時(shí)表 ????????????SET?@sql = ';WITH [Page_____Table] AS(' ????????????????+'SELECT ROW_NUMBER() OVER(ORDER BY '?+ @OrderFields + ') AS [RowNow],'?+ @Fields ????????????????+'FROM ['+ @TabeName +' ][a] WITH(NOLOCK) '?+ @SearchWhere ????????????????+')' ????????????--查找當(dāng)前頁面記錄 ????????????IF @sqlType = 0 ????????????????BEGIN ????????????????-- A USE BETWEEN ????????????????????SET?@sql = @sql + 'SELECT *' ????????????????????????+'FROM [Page_____Table] WITH(NOLOCK)' ????????????????????????+'WHERE [RowNow] BETWEEN '?+CONVERT(NVARCHAR(20),(@page - 1) * @pageNumber + 1) + ' AND '?+CONVERT(NVARCHAR(20),@page * @pageNumber) ????????????????????????+'ORDER BY [RowNow]' ????????????????END ????????????ELSE ????????????????BEGIN ????????????????-- B USE TOP ????????????????????SET?@sql = @sql + 'SELECT TOP '?+CONVERT(NVARCHAR(20),@pageNumber) + ' *' ????????????????????????+'FROM [Page_____Table] WITH(NOLOCK)' ????????????????????????+'WHERE [RowNow] > '?+CONVERT(NVARCHAR(20),(@page - 1) * @pageNumber) ????????????????????????+'ORDER BY [RowNow]' ????????????????END ????????END ????EXEC(@sql) END

?

轉(zhuǎn)載于:https://www.cnblogs.com/aiwz/p/6153899.html

總結(jié)

以上是生活随笔為你收集整理的毫秒级百万数据分页存储过程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。