国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > SQL Server > 正文

SQL數(shù)據(jù)分頁查詢的方法

2024-08-31 01:04:18
字體:
供稿:網(wǎng)友

最近學(xué)習(xí)了一下SQL的分頁查詢,總結(jié)了以下幾種方法。

首先建立了一個(gè)表,隨意插入的一些測試數(shù)據(jù),表結(jié)構(gòu)和數(shù)據(jù)如下圖:

SQL數(shù)據(jù)分頁查詢,SQL數(shù)據(jù)查詢,SQL分頁查詢,SQL查詢

現(xiàn)在假設(shè)我們要做的是每頁5條數(shù)據(jù),而現(xiàn)在我們要取第三頁的數(shù)據(jù)。(數(shù)據(jù)太少,就每頁5條了)

方法一:

 select top 5 *  from [StuDB].[dbo].[ScoreInfo]  where [SID] not in  (select top 10 [SID]  from [StuDB].[dbo].[ScoreInfo]  order by [SID]) order by [SID]

結(jié)果:

SQL數(shù)據(jù)分頁查詢,SQL數(shù)據(jù)查詢,SQL分頁查詢,SQL查詢

此方法是先取出前10條的SID(前兩頁),排除前10條數(shù)據(jù)的SID,然后在剩下的數(shù)據(jù)里面取出前5條數(shù)據(jù)。

缺點(diǎn)就是它會遍歷表中所有數(shù)據(jù)兩次,數(shù)據(jù)量大時(shí)性能不好。

方法二:

 select top 5 *  from [StuDB].[dbo].[ScoreInfo]  where [SID]>  (select MAX(t.[SID]) from (select top 10 [SID] from [StuDB].[dbo].[ScoreInfo] order by [SID]) t ) order by [SID]

結(jié)果:

SQL數(shù)據(jù)分頁查詢,SQL數(shù)據(jù)查詢,SQL分頁查詢,SQL查詢

此方法是先取出前10條數(shù)據(jù)的SID,然后取出SID的最大值,再從數(shù)據(jù)里面取出 大于 前10條SID的最大值 的前5條數(shù)據(jù)。

缺點(diǎn)是性能比較差,和方法一大同小異。

方法三:

 select *  from (select *,ROW_NUMBER() over(order by [SID]) ROW_ID from [StuDB].[dbo].[ScoreInfo]) t where t.[SID] between (5*(3-1)+1) and 5*3

結(jié)果:

SQL數(shù)據(jù)分頁查詢,SQL數(shù)據(jù)查詢,SQL分頁查詢,SQL查詢

此方法的特點(diǎn)就是使用 ROW_NUMBER() 函數(shù),這個(gè)方法性能比前兩種方法要好,只會遍歷一次所有的數(shù)據(jù)。適用于Sql Server 2000之后的版本(不含)。

方法四:

 select *  from [StuDB].[dbo].[ScoreInfo] order by [SID]  offset 5*2 rows fetch next 5 rows only

結(jié)果:

SQL數(shù)據(jù)分頁查詢,SQL數(shù)據(jù)查詢,SQL分頁查詢,SQL查詢

此方法適用于Sql Server 2008之后的版本(不含)。

offset 10 rows fetch next 5 rows only 這句代碼我的理解是:跳過前面10條數(shù)據(jù)(前2頁)從下一條開始取5條數(shù)據(jù)。

個(gè)人感覺這個(gè)方法比使用 ROW_NUMBER() 函數(shù)的方法要好(從代碼方面來看,代碼也少很多),至于性能方面沒有做過測試,就不說了。

不過,最后兩種方法的性能肯定是遠(yuǎn)超前面兩種方法的,具體的還是看實(shí)用。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持VeVb武林網(wǎng)。


注:相關(guān)教程知識閱讀請移步到MSSQL教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 长丰县| 白玉县| 霍林郭勒市| 子长县| 新密市| 腾冲县| 分宜县| 游戏| 突泉县| 关岭| 克什克腾旗| 中牟县| 兖州市| 海晏县| 时尚| 泾源县| 巩留县| 佛教| 鹤峰县| 海林市| 广灵县| 甘肃省| 泾阳县| 若尔盖县| 通城县| 土默特左旗| 巴楚县| 兴化市| 怀来县| 兰溪市| 万载县| 莒南县| 沙洋县| 获嘉县| 紫金县| 竹溪县| 赞皇县| 炉霍县| 浦东新区| 称多县| 铜鼓县|