新聞中心
隨著分頁被廣泛引入到網(wǎng)頁中,SQL server 分頁有著重要的地位。分頁可以顯示數(shù)據(jù)集中的一小部分,而不需要顯示整個(gè)數(shù)據(jù)集,這有助于減少通信量,提高性能和減輕服務(wù)器的負(fù)載。本文將介紹 SQL server 分頁前的行為準(zhǔn)備,SQL server 分頁的基本方法以及解決分頁中的性能問題的一些技巧。

成都創(chuàng)新互聯(lián)公司主營晉州網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,重慶APP軟件開發(fā),晉州h5成都微信小程序搭建,晉州網(wǎng)站營銷推廣歡迎晉州等地區(qū)企業(yè)咨詢
## 使用ROW_number 來實(shí)現(xiàn)
在開始實(shí)現(xiàn) SQL Server 分頁之前,需要了解使用 [`ROW_NUMBER`](https://docs.microsoft.com/zh-cn/sql/t-sql/functions/row-number-transact-sql?view=sql-server-ver15) 來排序結(jié)果集。`ROW_NUMBER` 返回滿足指定條件的結(jié)果集中每一行的行號。例如,以下查詢使用 `ROW_NUMBER()` 將結(jié)果集按照 “name” 屬性進(jìn)行排序:
“`SQL
SELECT ROW_NUMBER() OVER(ORDER BY Name) RN,
Name
FROM Users;
該查詢返回的結(jié)果將按照 Name 屬性進(jìn)行排序,每一行都有一個(gè)用以標(biāo)識行號的 RN 列:
RN Name
1 John
2 Mary
3 Joe
4 Bill
通過使用 `ROW_NUMBER()` 函數(shù),可以實(shí)現(xiàn) SQL server 分頁。
## 分頁查詢
SQL server 中的分頁查詢是由 [`OFFSET`/`FETCH`](https://docs.microsoft.com/zh-cn/sql/t-sql/queries/select-order-by-clause-transact-sql?view=sql-server-ver15) 子句實(shí)現(xiàn)的。例如:
SELECT Name
FROM Users
ORDER BY Name
OFFSET 10 ROWS
FETCH NEXT 5 ROWS ONLY
該查詢將從整個(gè)結(jié)果集的第 10 行開始,獲取接下來的 5 行數(shù)據(jù):
Name
Joe
Mark
Paul
Tom
William
通過將 `ROW_NUMBER` 和 `OFFSET/FETCH` 結(jié)合起來應(yīng)用到 SQL Server 分頁查詢:
SELECT Name
FROM
(SELECT ROW_NUMBER() OVER(ORDER BY Name) RN,
Name
FROM Users
) AS T
WHERE RN BETWEEN 11 AND 15
將返回 `Joe`, `Mark`, `Paul`, `Tom`, `William` 這五行數(shù)據(jù)。
## 解決分頁查詢性能問題
如果我們經(jīng)常使用分頁查詢,可能會發(fā)現(xiàn)性能不是很好。此時(shí)可以考慮使用 [遞歸 CTE](https://docs.microsoft.com/zh-cn/sql/cte/cte-definition?view=sql-server-ver15) 來解決性能問題。
先以上邊的分頁查詢?yōu)槔覀兛梢允褂眠f歸 CTE 來進(jìn)行改造:
```SQL
WITH CTE AS
(
SELECT ROW_NUMBER() OVER(ORDER BY Name) RN,
Name
FROM Users
WHERE RN BETWEEN 11 AND 15
UNION ALL
SELECT ROW_NUMBER() OVER(ORDER BY Name) RN,
Name
FROM Users
WHERE RN
)
SELECT Name FROM CTE
通過將分頁查詢拆分成兩個(gè)獨(dú)立的查詢,并將它們通過 UNION ALL 組合在一起,可以有效地解決性能問題。
本文介紹了如何實(shí)現(xiàn) SQL server 分頁,以及如何解決分頁查詢中性能問題的一些技巧,在使用分頁查詢時(shí)應(yīng)該嘗試上邊介紹的方法,以提高性能。
成都創(chuàng)新互聯(lián)科技有限公司,是一家專注于互聯(lián)網(wǎng)、IDC服務(wù)、應(yīng)用軟件開發(fā)、網(wǎng)站建設(shè)推廣的公司,為客戶提供互聯(lián)網(wǎng)基礎(chǔ)服務(wù)!
創(chuàng)新互聯(lián)(www.cdcxhl.com)提供簡單好用,價(jià)格厚道的香港/美國云服務(wù)器和獨(dú)立服務(wù)器。創(chuàng)新互聯(lián)成都老牌IDC服務(wù)商,專注四川成都IDC機(jī)房服務(wù)器托管/機(jī)柜租用。為您精選優(yōu)質(zhì)idc數(shù)據(jù)中心機(jī)房租用、服務(wù)器托管、機(jī)柜租賃、大帶寬租用,可選線路電信、移動、聯(lián)通等。
名稱欄目:SQLServer分頁操作指南(sqlserver怎么分頁)
網(wǎng)址分享:http://www.5511xx.com/article/dpdddee.html


咨詢
建站咨詢
