数据库分页技术
来源:互联网 发布:日程计划表软件 编辑:程序博客网 时间:2024/05/18 03:01
数据库分页技术
- 数据库分页技术
- 概述
- 数据库分页的核心
- 分页SQL语句的写法
- 分页过程及其相应javabean的设计
- 总结
- 数据库分页技术
概述
凡是采用数据库做底层存储的应用系统,肯定都会用到数据库的分页功能,可能出于以下的原因:
- 数据库中的数据有10000行,我们需要将该数据展示在Jsp页面上,但是1000条数据做展示显示效果太差;
- 需要将数据库中的数据做分层抽样时,我觉得首先将数据库做分页,接着对分页的数据做随机抽样,应该是一个很自然的想法;
- 其它一些应用场景
在我的现实需求中,基于上面的一些原因,我需要对数据库进行分页,于是有了这篇文章。
数据库分页的核心
数据库分页技术有两大核心,下面分别介绍。
分页SQL语句的写法
针对不同的数据库,会有不同的分页SQL语句规范,但是我的系统只涉及MySQL、PostgreSQL、Greenplum分布式集群,所以我写的SQL语句对于上述三种数据库是通用的,如果是对除此之外的数据库进行分页操作,请先熟悉该种类型数据库的分页SQL语句。
对于MySQL数据库和PostgreSQL数据库,它们都支持一个比较cool的特诊,该特征被称为OFFSET,OFFSET通常被用在LIMIT子句中。LIMIT子句常常用来限制SQL语句返回的结果,在一个表中如果你有1000行数据,但是仅仅想要返回其中的前10行,那么你应该采用下面的SQL语句:
select column from table LIMIT 10;
LIMIT字句的功能和在Microsoft SQL Server中的TOP子句十分的相似。
假设你想显示第11行到20行的数据,那么此时你应该使用OFFSET关键字,像这面这个查询一样:
select column from table LIMIT 10 OFFSET 10; -- 请注意OFFSET偏移量从从0开始,10代表从数据的第11条数据开始,limit 10代表总共读取10条数据
这使得编写分页SQL语句变得容易,通常使用的方法是选择所有记录,然后在应用程序服务器层上通过它们进行筛选,而不是直接在数据库上筛选。正如你想象的,在数据库上这样做会产生更好的性能。我知道PostgreSQL支持OFFSET关键字有相当长的一段时间,并且由于某种原因,我一直认为它不被MySQL支持。事实证明,MySQL数据库现在支持。
从上面的SQL语句中,我们可以总结出下面的计算规律:
- OFFSET num 这个num的计算方法是(当前页-1) * 每页显示的行数,这样我们就能得到每页的全部数据
- LIMIT num 这个num是每页显示的数据数目,由开发人员决定
分页过程及其相应javabean的设计
从分页SQL中我们知道,进行数据库分页,需要明确的传递以下参数:
- 当前页
- 查询返回的行数
- 总页数
- 总记录数
这些数据在分页经常会遇到,所以,我们会选择将这些数据封装成Javabean,该结构是分页中最重要、最核心的结构。
总结
分页的用途十分广泛。
- 数据库分页技术
- 数据库中的分页技术
- 数据库分页技术
- jsp数据库分页技术
- 数据库分页技术
- 数据库分页技术
- 数据库分页技术
- 不同数据库分页技术
- 数据库分页技术总结:
- 数据库分页技术
- SQL 数据库分页技术
- 数据库分页技术
- jsp数据库查询分页技术
- sqlserver数据库的分页技术
- 不同数据库的分页技术
- Hibernate 数据库分页查询技术
- 简单的数据库分页技术
- 不同数据库的分页技术
- 主流脚本编程语言大比拼
- Floyd算法为什么只有5行
- python 反向shell 编程
- Log4j-详细教程
- iOS reason: '*** -[__NSArrayM objectAtIndex:]: index 0 beyond bounds for empty array'
- 数据库分页技术
- mysql拷贝表的几种方式
- jsp内置对象
- Solr分组聚合查询之Facet
- SDUT 2805 大家快来A水题
- 数据结构 day2
- 命令行下操作redis
- pycharm设置代码行号
- Windows打开dcm文件、dcm文件批量转其它图片文件格式