sql数据分页怎么查询(SQL数据分页查询的方法)
类别:数据库 浏览量:2278
时间:2022-01-26 01:32:39 sql数据分页怎么查询
SQL数据分页查询的方法最近学习了一下SQL的分页查询,总结了以下几种方法。
首先建立了一个表,随意插入的一些测试数据,表结构和数据如下图:
现在假设我们要做的是每页5条数据,而现在我们要取第三页的数据。(数据太少,就每页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]
结果:
此方法是先取出前10条的SID(前两页),排除前10条数据的SID,然后在剩下的数据里面取出前5条数据。
缺点就是它会遍历表中所有数据两次,数据量大时性能不好。
方法二:
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]
结果:
此方法是先取出前10条数据的SID,然后取出SID的最大值,再从数据里面取出 大于 前10条SID的最大值 的前5条数据。
缺点是性能比较差,和方法一大同小异。
方法三:
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
结果:
此方法的特点就是使用 ROW_NUMBER() 函数,这个方法性能比前两种方法要好,只会遍历一次所有的数据。适用于Sql Server 2000之后的版本(不含)。
方法四:
select * from [StuDB].[dbo].[ScoreInfo] order by [SID] offset 5*2 rows fetch next 5 rows only
结果:
此方法适用于Sql Server 2008之后的版本(不含)。
offset 10 rows fetch next 5 rows only 这句代码我的理解是:跳过前面10条数据(前2页)从下一条开始取5条数据。
个人感觉这个方法比使用 ROW_NUMBER() 函数的方法要好(从代码方面来看,代码也少很多),至于性能方面没有做过测试,就不说了。
不过,最后两种方法的性能肯定是远超前面两种方法的,具体的还是看实用。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持开心学习网。
您可能感兴趣
- 如何用mysql建立图书管理系统(图书管理系统的sqlserver数据库设计示例)
- django数据库查询条件(djang常用查询SQL语句的使用代码)
- mysql多行数据之和(详解MySQL的数据行和行溢出机制)
- sqlserver存储过程怎么写日志(SqlServer快速检索某个字段在哪些存储过程中sql 语句)
- sqlserver追加主键(sqlserver主键自增的实现示例)
- sqlserver小结(基于sqlserver的四种分页方式总结)
- 命令行如何使用xampp中的mysql(解决xampp自启动和mysql.sock问题)
- mysql中默认排序教程(基于mysql 默认排序规则的坑)
- 将SQL Server数据迁移到MySQL的方法
- mysql的复制原理(浅析MySQL的WriteSet并行复制)
- SqlTransaction事务的用法
- SQL中in和exists的区别
- Mysql官方性能测试工具mysqlslap的使用简介(Mysql官方性能测试工具mysqlslap的使用简介)
- mysql 查询都是0的值(MySQL按小时查询数据,没有的补0)
- mysql索引b+树和b树(MySQL使用B+Tree当索引的优势有哪些)
- MYSQL字符集设置的方法详解(终端的字符集)(MYSQL字符集设置的方法详解终端的字符集)
- 花不语 下 如果重来一次的话,你还会这么选择吗(花不语下如果重来一次的话)
- 城市记忆之上海 最难忘的是老弄堂里的市井味道(城市记忆之上海)
- 太鸡贼了,这老小区轻松搞定了停车问题(这老小区轻松搞定了停车问题)
- 太鸡贼了,这老小区轻松搞定了停车问题(这老小区轻松搞定了停车问题)
- 节日我在岗|警景相融 平安相伴(节日我在岗警景相融)
- 战 疫 时刻 致敬每一位石化大学的 守护者(战疫时刻)
热门推荐
- javascript的执行顺序
- javascript中定义数组的方法(JavaScript中数组sort方法的基本使用与踩坑记录)
- python获取字符串类型(python3利用ctypes传入一个字符串类型的列表方法)
- 利用前端做扫雷游戏(js实现经典扫雷游戏)
- python怎么操作mysql(详解Python的数据库操作pymysql)
- sqlserver技术文档(sql server2016里面的json功能浅析)
- IIS假死的原因
- navicat连接mysql1045解决方法(Navicat 连接服务器端中的docker数据库的方法)
- C# string 和 stringbuilder 的区别
- django学生管理系统搭建(Django实现学生管理系统)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9