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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

高性能SQLServer通用分页存储过程

發布時間:2024/4/17 数据库 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 高性能SQLServer通用分页存储过程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

這是我之前整理的高性能SQLServer 通用分頁存儲過程,測試性能還不錯,特此分享出來,如果有人能更好地優化,請留言,謝謝!

SQL代碼 ?1?USE?[數據庫名稱]
?2?GO
?3?/******?Object:??StoredProcedure?[dbo].[dbTab_PagerHelper]????Script?Date:?08/22/2010?13:30:39?******/
?4?SET?ANSI_NULLS?ON
?5?GO
?6?SET?QUOTED_IDENTIFIER?ON
?7?GO
?8?--?=============================================
?9?--?Author:????Jarry
10?--?Create?date:?2009-08-01
11?--?Description:????通用分頁存儲過程
12?--?=============================================
13?CREATE?PROCEDURE?[dbo].[dbTab_PagerHelper]?
14?????@TableName?VARCHAR(50),?--表名
15?????@FieldNames?VARCHAR(1000),?--顯示列名,如果是全部字段則為*
16?????@WhereString?VARCHAR(256)?=?NULL,?--查詢條件?不含'WHERE'字符,如[id]>5?AND?[userid]>10000
17?????@OrderField?VARCHAR(256)?=?NULL,?--排序不含'ORDER?BY'字符,當@SortType=3時生效,必須指定ASC或DESC,建議在最后加上主鍵
18?????@OrderType?TINYINT,?--排序規則(1:單列正序ASC;2:單列倒序DESC;3:多列排序;)
19?????@PageIndex?INT,?--當前頁數
20?????@PageSize?INT,?--每頁輸出的記錄數
21?????@RecorderCount?INT?=?0?--記錄總數,如果小于等于0則重新統計總數
22?AS
23?BEGIN
24?????SET?NOCOUNT?ON;
25?????DECLARE?@LowerBound?int,?@UpperBound?int;
26?????SET?@LowerBound?=?(@PageSize?*?(@PageIndex?-?1));
27?????SET?@UpperBound?=?(@LowerBound?+?@PageSize?-?1);
28?????DECLARE?@MSSQL?NVARCHAR(3000),?@Where?NVARCHAR(500),?@Order?VARCHAR(256),?@Order2?VARCHAR(256);
29?????SET?@MSSQL?=?'';
30?????SET?@Where?=?'';
31?????SET?@Order?=?'';
32?????SET?@Order2?=?'';
33?????IF((@WhereString?IS?NOT?NULL)?AND?(@WhereString?!=?''))?
34?????????SET?@Where?=?'?WHERE?'?+?@WhereString;
35?????IF((@OrderType?IS?NOT?NULL)?AND?(@OrderType?>?0))
36?????BEGIN
37?????????SET?@Order?=?'?ORDER?BY?'?+?@OrderField;
38?????????IF(@OrderType?=?1)
39?????????????SET?@Order?=?@Order?+?'?ASC';
40?????????ELSE?IF(@OrderType?=?2)
41?????????????SET?@Order?=?@Order?+?'?DESC';
42?????????SET?@Order2?=?REPLACE(REPLACE(UPPER(@Order),?'?ASC',?'?{ASC}'),?'?DESC',?'?{DESC}');
43?????????SET?@Order2?=?REPLACE(REPLACE(UPPER(@Order2),?'?{ASC}',?'?DESC'),?'?{DESC}',?'?ASC');
44?????END
45?????
46?????--重新統計總記錄數
47?????IF(@RecorderCount?<=?0)
48?????????EXECUTE('SELECT?COUNT(*)?AS?[RecorderCount]?FROM?'?+?@TableName?+?@Where);
49?????ELSE
50?????????SELECT?@RecorderCount?AS?[RecorderCount];
51?????
52?????IF(@PageIndex?<=?1)?--如果是第一頁
53?????BEGIN
54?????????SET?@MSSQL?=?'SELECT?TOP?'?+?STR(@PageSize)?+'?'+?@FieldNames?+?'?FROM?'?+?@TableName?+?@Where?+?@Order;
55?????END
56?????ELSE?IF((@PageSize*@PageIndex)?>=?@RecorderCount)?--如果是最后一頁
57?????BEGIN
58?????????SET?@MSSQL?=?'SELECT?'?+?@FieldNames?+?'?FROM?(SELECT?TOP?'?+?STR(@PageSize?-?((@PageSize*@PageIndex)?-?@RecorderCount))?+?'?'?+?@FieldNames?+?'?FROM?'?+?@TableName?+?@Where?+?@Order2?+?')?AS?[PagerTempTable]'?+?@Order;
59?????END
60?????ELSE
61?????BEGIN
62?????????IF(@OrderType?<?3)?--單列排序分頁方法
63?????????BEGIN
64?????????????SET?@MSSQL?=?'SELECT?TOP?'?+?STR(@PageSize);
65?????????????SET?@MSSQL?=?@MSSQL?+?'?'?+?@FieldNames;
66?????????????SET?@MSSQL?=?@MSSQL?+?'?FROM?'?+?@TableName;
67?????????????SET?@MSSQL?=?@MSSQL?+?@Where;
68?????????????DECLARE?@TempStrings?NVARCHAR(500);
69?????????????SET?@TempStrings?=?'';
70?????????????IF(@OrderType?>?0)
71?????????????BEGIN
72?????????????????IF(@Where?<>?'')
73?????????????????????SET?@TempStrings?=?@TempStrings?+?'?AND';
74?????????????????ELSE
75?????????????????????SET?@TempStrings?=?'?WHERE?';
76?????????????????SET?@TempStrings?=?@TempStrings?+?'?'?+?@OrderField;
77?????????????????
78?????????????????IF(@OrderType?=?1)
79?????????????????BEGIN
80?????????????????????SET?@TempStrings?=?@TempStrings?+?'?>?(SELECT?MAX';
81?????????????????END
82?????????????????ELSE
83?????????????????BEGIN
84?????????????????????SET?@TempStrings?=?@TempStrings?+?'?<?(SELECT?MIN';
85?????????????????END
86?????????????????SET?@TempStrings?=?@TempStrings?+?'('?+?@OrderField?+?')?FROM?(SELECT?TOP?'+STR(@LowerBound)+'?'?+?@OrderField?+?'?FROM?'?+?@TableName?+?@Where?+?@Order;
87?????????????????SET?@TempStrings?=?@TempStrings?+?')?AS?[PagerTempTable])';
88?????????????????
89?????????????END
90?????????????SET?@MSSQL?=?@MSSQL?+?@TempStrings?+?@Order;
91?????????END
92?????????ELSE?--多列排序分頁方法
93?????????BEGIN
94?????????????SET?@MSSQL?=?'SELECT?TOP?'?+?STR(@PageSize)?+?'?'?+?@FieldNames?+?'?FROM?(SELECT?TOP?'?+?STR(@PageSize)?+?'?'?+?@FieldNames?+?'?FROM?(SELECT?TOP?'?+?STR(@PageSize*@PageIndex)?+?'?'?+?@FieldNames?+?'?FROM?'?+?@TableName?+?@Where?+?@Order?+?')?AS?[PagerTempTable]'?+?@Order2?+?')?AS?[PagerTempTable]'?+?@Order?+?';'
95?????????END
96?????END
97?????EXECUTE(@MSSQL);
98?END

?

?

轉載于:https://www.cnblogs.com/hijarry/archive/2010/08/22/1805809.html

總結

以上是生活随笔為你收集整理的高性能SQLServer通用分页存储过程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲精品自拍 | 丰满人妻老熟妇伦人精品 | 自拍偷拍色 | 日韩美女黄色片 | 国产日批视频 | 免费在线观看黄 | 午夜丰满寂寞少妇精品 | 国产日韩av一区二区 | 日批网站在线观看 | 草草在线观看视频 | 成年人在线免费观看网站 | 男女啪啪国产 | 香蕉视频二区 | 欧美顶级少妇做爰 | 一级特黄a大片免费 | 寡妇av| 午夜一区二区三区在线观看 | 亚洲色图国产精品 | 欧美黑人性受xxxx精品 | 欧美大肚乱孕交hd孕妇 | 久久久久久国产精品三级玉女聊斋 | 中文字幕网址在线 | 国产91在线免费观看 | 国产三级精品三级在线 | www.精品 | 日韩成人在线免费视频 | 91精品国自产 | 亚洲最大的av网站 | 日韩女优中文字幕 | 少妇高潮a一级 | 国产精品一区二区视频 | 欧美亚洲日本 | av片免费在线播放 | 日本女人黄色片 | 97自拍偷拍视频 | 在线看b | 动漫美女露胸网站 | 亚洲国产视频网站 | 免费观看理伦片在线播放视频软件 | 国产成人无码精品久久久久久 | 欧美成人精品一区二区综合免费 | 国产5区 | 日本一二三区在线视频 | 午夜精品成人 | 在线看91| 少妇厨房愉情理伦bd在线观看 | 久久久国产亚洲 | 日本成人久久 | 国产一级一区二区 | 超碰人操 | 天天躁日日躁狠狠躁av麻豆 | 国产高清视频 | 天堂在线8 | 美女网站污 | 色婷婷av一区二区三区在线观看 | 日韩成人免费观看 | 福利在线一区 | 久久久久97国产 | 青春草在线视频免费观看 | 日韩三级国产精品 | 一级特级片 | 西方av在线 | 欧美久久久久久又粗又大 | 日日骚网 | 亚洲黄色成人网 | 国产一区二区电影 | 一本色道久久综合亚洲精品酒店 | 国产欧美一区二区三区在线看蜜臀 | 亚洲九九视频 | 日本激情视频网站 | 91一区二区| 欧美一区二区三区在线看 | 久久午夜夜伦鲁鲁片无码免费 | 精品久久中文字幕 | 红桃视频在线播放 | 日本久久免费 | 999免费视频| free性丰满69性欧美 | 国产色无码精品视频 | 国产精品久久久久三级 | 久操视频在线播放 | 成人一级免费视频 | 美女四肢被绑在床扒衣 | 亚洲性免费 | 国产一区二区三区电影在线观看 | 国产精品扒开腿做爽爽爽男男 | 国产一级自拍视频 | 中文字幕av资源 | 午夜在线免费观看视频 | 国产精品欧美激情在线播放 | 亚洲一二三四在线 | 免费一级欧美 | 国产免费久久精品国产传媒 | 久久久免费看片 | 中文字幕影院 | 免费午夜影院 | 日本a网 | 国产精选av | av av片在线看 |