網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
SQLServer分頁(yè)方式
附帶50萬(wàn)數(shù)據(jù)分頁(yè)時(shí)間[本機(jī)訪問(wèn)|已重啟SQL服務(wù)|無(wú)其他程序干擾][非索引排序]
環(huán)境 WIN7 SQL服務(wù)12.04 SQL管理器SSMS14.01
1.Offset and Fetch 方式分頁(yè)
[SqlServer2012+] OFFSET 起始值 ROWS FETCH NEXT 每頁(yè)條數(shù) ROWS ONLY
1.分頁(yè)條件不能重復(fù),建議使用 分頁(yè)條件+主鍵 一起作為 分頁(yè)參數(shù)
2.分頁(yè)語(yǔ)句中 FIRST=NEXT ROWS=ROW
3.不使用排序可以用 order by (select 1)
使用 OFFSET FETCH 方式分頁(yè)必須帶order by key 其中key 必須是唯一值 不然會(huì)導(dǎo)致錯(cuò)誤
select * from ( select * from sysrizhi ) table_temp order by riqi desc,sysrizhiid desc offset 10 rows fetch next 10 rows only
50萬(wàn)行執(zhí)行時(shí)間 770毫秒 索引排序10毫秒
select * from tcpliushui order by riqi OFFSET 100 ROWS FETCH NEXT 20 ROWS ONLY
2.row_number() 方式分頁(yè)
[SqlServer2005+] row_number()over(order by 已有排序字段)rownumber 然后根據(jù)rownumber篩選
使用方式
select * from (select *, ROW_NUMBER() Over( order by riqi desc,sysrizhiid desc ) as rowNum from ( select * from sysrizhi ) as table_1 ) as t where t.rowNum>10 and t.rowNum<=20
速度測(cè)試 50萬(wàn)行執(zhí)行時(shí)間 774毫秒 索引排序10毫秒
select * from (select row_number()over(order by riqi)rownumber,* from tcpliushui )a where rownumber>100 and rownumber<121
速度測(cè)試 50萬(wàn)行執(zhí)行時(shí)間 777毫秒 索引排序13毫秒
select top 20 * from (select row_number()over(order by riqi)rownumber,* from tcpliushui)a where rownumber>100
速度測(cè)試 50萬(wàn)行執(zhí)行時(shí)間 775毫秒 索引排序15毫秒
select * from (select row_number()over(order by riqi)rownumber,* from tcpliushui)a where rownumber between 101 and 120
3.row_number()變種
不基于已有字段 [SqlServer2005+]
速度測(cè)試 50萬(wàn)行執(zhí)行時(shí)間 779毫秒 索引排序15毫秒
select * from ( select row_number()over(order by tempColumn)rownumber,* from (select top 120 tempColumn=0,* from tcpliushui where 1=1 order by riqi)a )b where rownumber>100
4.not in/top方式分頁(yè)
速度測(cè)試 50萬(wàn)行執(zhí)行時(shí)間 858毫秒 索引排序51毫秒
select top 20 * from tcpliushui where tcpliushuiid not in (select top 100 tcpliushuiid from tcpliushui order by riqi) order by riqi
5.not exists方式分頁(yè)
速度測(cè)試 50萬(wàn)行執(zhí)行時(shí)間 852毫秒 索引排序22毫秒
select top 20 * from tcpliushui where not exists (select 1 from (select top 100 tcpliushuiid from tcpliushui order by riqi)a where a.tcpliushuiid=tcpliushui.tcpliushuiid) order by riqi
6.max/top方式分頁(yè)
速度測(cè)試 50萬(wàn)行執(zhí)行時(shí)間 819毫秒 索引排序12毫秒
select top 20 * from tcpliushui where tcpliushuiid>(select max(tcpliushuiid) from (select top 100 tcpliushuiid from tcpliushui order by riqi)a) order by riqi
原文鏈接:https://blog.csdn.net/u011363395/article/details/104414500
相關(guān)推薦
- 2022-11-07 React?Hook?父子組件相互調(diào)用函數(shù)方式_React
- 2022-07-14 AVX2指令集優(yōu)化整形數(shù)組求和算法_C 語(yǔ)言
- 2022-08-04 Go語(yǔ)言func匿名函數(shù)閉包示例詳解_Golang
- 2023-07-04 Guava 之 EventBus
- 2022-09-19 Python?argparse?解析命令行參數(shù)模塊詳情_(kāi)python
- 2022-05-29 在Linux系統(tǒng)上安裝PostgreSQL數(shù)據(jù)庫(kù)_PostgreSQL
- 2022-07-17 C++深入講解new與deleted關(guān)鍵字的使用_C 語(yǔ)言
- 2023-12-06 Warn: Could not find @TableId
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門(mén)
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支