当前位置: 首页 > news >正文

数据库分页查询

数据库只所以要分页查询,其实是界面显示的需要,不是数据库的需要。
数据库本身查询是很快的。本文章是针对这种情况的。
如果数据库本身查询慢,那是优化查询语句的事情了。不在本文章范围内。

今天遇到了这个问题。
是个老项目。在原有的查询的基础上分页查询,提高显示效率。

1、尽量不作大的修改。
2、假设界面每页显示 1000 条数据。
3、下面 %sql% 可以是简单的表名,也可以是复杂的查询语句;
4、datetime 数据库排序字段。一般是最新的记录,显示在最前面;这里用时间字段;(降序)

第一页: 

 select top 1000 * from (%sql%) order by datetime desc

最末页:
  
用记录总数 mod 1000,计算出最末页要显示的记录个数。如果余数为0,那就是1000 条。否则就是余数 N。 

 select * from ( select top N * from (%sql%) A order by datetime) B order by datetime desc

   原理:先升序查询数据,然后取出最前面的 N 条记录,就是最后一页要显示的 N 条记录了。再按降序排序。

中间页:
  
有了上面最末页的思路,中间页也很容易实现了。  

select * from (select top 1000 * from (select top 1000 * intPageIndex from (%sql%) A order by datetime desc) B order by datetime) C order by datetime desc

intPageIndex 为第几页。
原理和最末页的查询是一样的。
比如显示第5页,先按降序取出前 5000 条数据,再从这 5000 条数据中,取出最后的 1000 条,就是第5页要显示的数据了。

是不是很简单。
 

http://www.lryc.cn/news/233289.html

相关文章:

  • 如何选择合适的数据库管理工具?Navicat Or DBeaver
  • Opencv!!在树莓派上安装Opencv!
  • 三菱FX3U小项目—传输带定分级控制
  • 实例解释遇到前端报错时如何排查问题
  • 微电影分销付费短剧小程序开发
  • 时间序列预测中的4大类8种异常值检测方法(从根源上提高预测精度)
  • Android---Gradle 构建问题解析
  • 02-2解析JsonPath
  • Git拉取远程指定分支
  • 使用Ant Design Pro开发时的一个快速开发接口请求的技巧
  • m1 rvm install 3.0.0 Error running ‘__rvm_make -j8‘
  • 对产品实现汇率换算服务(将两个CompletableFuture对象整合起来,无论它们是否存在依赖)
  • 数据库期末考前复习题(单选+多选+判断+解答)
  • Ubuntu22.04源码安装ROS-noetic(ROS1非ROS2),编译运行VINS-MONO
  • 窗口管理工具 Mosaic mac中文版功能特点
  • Sql Prompt 10下载安装图文教程
  • VB.net webbrowser 自定义下载接口实现
  • Android 启动优化案例-WebView非预期初始化排查
  • 【MATLAB源码-第80期】基于蚯蚓优化算法(EOA)的无人机三维路径规划,输出做短路径图和适应度曲线
  • 树状图怎么画?推荐这个好用的在线树状图软件!
  • C#学习相关系列之Linq用法---where和select用法(二)
  • 后端返回 date 时间日期格式为 UTC 格式字符串,形如 2022-08-11T10:50:31.050+00:00前端如何修改为yyyy-mm-dd
  • 【万字长文】前端性能优化实践 | 京东云技术团队
  • WPF位图效果
  • CFI(Common Flash Interface)简介
  • linux、windows 查看java等进程占用资源情况
  • 听GPT 讲Rust源代码--library/core/src(7)
  • html:lang属性设置为中文zh-CN
  • 滴滴 Redis 异地多活的演进历程
  • 前端实现页面内容的截图与下载(html2canvas)