亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SQL Server中怎么實現高效分頁

發布時間:2021-08-09 14:44:46 來源:億速云 閱讀:165 作者:Leah 欄目:數據庫

這期內容當中小編將會給大家帶來有關SQL Server中怎么實現高效分頁,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

ROW_NUMBER的含義及語法定義

ROW_NUMBER實現對結果集的輸出進行編號。 具體來說,返回結果集分區內行的序列號,每個分區的***行從 1 開始。

ROW_NUMBER ( ) OVER ( [ PARTITION BY 字段 , ] order_by_clause )PARTITION BY:將 FROM 子句生成的結果集劃分為應用 ROW_NUMBER 函數的分區。 value_expression 指定對結果集進行分區所依據的列。 如果未指定 PARTITION BY,則此函數將查詢結果集的所有行視為單個組。order_by_clause: 子句可確定在特定分區中為行分配*** ROW_NUMBER 的順序。 order by 子句是必選項。返回值:bigint。結果集分區內行的序列號。offset的含義及語法定義

offset是order by的子句,主要用來限定返回的行數,用來做分頁也是很合適的。只是從MSSQL2012才開始支持。語法結構如下:

FETCH { NEXT } { integer_constant | fetch_row_count_expression } { ROWS } ONLY

fetch_row_count_expression 可以是變量、參數或常量標量子查詢。 在使用子查詢時,它無法引用在外部查詢范圍中定義的任何列。也就是說,它無法與外部查詢相關聯。

結合到分頁,語法語法:

offset startPage rows fetch next pageSize rows only

其中起始頁面:startPage=(@page-1)*@rows,頁面大小:pageSize=@rows

演示數據準備

為了說明方便,我們準備一些演示數據,這是一個簡單的業務銷售表,字段只有業務員、銷售區域和銷售額,如下:

declare @sale table( FName nvarchar(50), FDistrict nvarchar(50), FAmount decimal(28,10) ); insert into @sale values ('張三','北京',20000), ('張三','上海',50000), ('張三','深圳',40000), ('張三','廣州',30000), ('李四','北京',30000), ('李四','上海',50000), ('李四','深圳',40000), ('李四','廣州',10000), ('王二','北京',70000), ('王二','上海',10000), ('王二','深圳',60000), ('王二','廣州',20000), ('馬六','北京',80000), ('馬六','上海',20000), ('馬六','深圳',70000), ('馬六','廣州',60000)

SQL Server中怎么實現高效分頁

準備演示數據

使用ROW_NUMBER分頁

比如我們希望按照業務員+銷售區域排序后,每4條記錄一頁顯示,寫法如下:

declare @pagesize int =4;--每頁記錄數  declare @pagenum int =1;--第幾頁  select v.* from (select row_number() over(order by FName,FDistrict) as FRowIndex,* from @sale) as v where v.FRowIndex between @pagesize*(@pagenum-1)+1 and @pagenum*@pagesize;

SQL Server中怎么實現高效分頁

分頁查詢

ROW_NUMBER函數在SQL中屬于熱名稱(即剛定的名稱FRowIndex),只可以出現在select子句中,需要放在子查詢中。也可以先對子查詢做好定義后面再直接引用,語法如下:

declare @pagesize int =4;--每頁記錄數  declare @pagenum int =1;--第幾頁  with saledata as ( select row_number() over(order by FName,FDistrict) as FRowIndex,* from @sale )  select * from saledata where FRowIndex between @pagesize*(@pagenum-1)+1 and @pagenum*@pagesize;

SQL Server中怎么實現高效分頁

分頁查詢

ROW_NUMBER來做分頁查詢,經過反復應用測試,效率還是很高的。完整的測試腳本參看下圖:

SQL Server中怎么實現高效分頁

使用OFFSET實現分頁

重復的代碼部分不再贅述,在查詢時要注意,offset是Order By的子句,不能獨立存在。語法結構如下:

select * from @sale order by FName,FDistrict offset (@pagenum-1)*@pagesize rows fetch next @pagesize rows only

返回的結果與使用row_number是一致的。完整的測試腳本參看下圖:

SQL Server中怎么實現高效分頁

上述就是小編為大家分享的SQL Server中怎么實現高效分頁了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

金坛市| 兴业县| 庆阳市| 金寨县| 十堰市| 台州市| 平遥县| 南宫市| 玉龙| 平定县| 富蕴县| 广元市| 大埔县| 太和县| 军事| 澄迈县| 河池市| 黑河市| 宾阳县| 清河县| 桐乡市| 云浮市| 林周县| 屏东县| 西贡区| 北票市| 莲花县| 瑞金市| 临朐县| 临桂县| 双峰县| 湘潭县| 宁德市| 镇江市| 寿阳县| 前郭尔| 宁强县| 武定县| 溧阳市| 西安市| 衢州市|