【转】分页查询介绍及好处简介 | 您所在的位置:网站首页 › 条件分页查询 › 【转】分页查询介绍及好处简介 |
转自:https://www.2cto.com/database/201511/451632.html
1 背景概述 由于在项目中需要在页面上显示数量非常多的数据, 在进行数据库查询时首先会把所有的数据都查询出来,然后在进行显示,这时候分页查询的操作就必不可少了,本文介绍Mysql、Oracle、sql Server 三种数据库进行分页查询的用法。 2 名词解释 分页查询 就是将将过多的结果在有限的界面上分多页来显示,一般将分页查询分为两类:逻辑分页、物理分页。 逻辑分页是在用户第一次访问时,将数据库的所有记录全部查询出来,添加到一个大集合中,然后存放在session对象,再通过页码计算出当前页需要显示的数据内容,存储到一个小的list的集合中,并将其存储到request对象中,跳转到JSP页面,进行遍历显示。 当用户第二次访问时,只要不关闭浏览器,还会从session中获取数据,来进行显示。因为此种方法是在内存的session对象中进行计算分页显示的,而不是真正的将我们数据库进行分页的,所以叫做逻辑分页。 缺点:如果需要查询的数据量过大,session将耗费大量的内存;因为是在session中获取数据,如果第二次或者更多此的不关闭浏览器访问,会直接访问session,从而不能保证数据是最新的。 优点:统一代码处理方式,较容易跨数据库做迁移。 物理分页,使用数据库自身所带的分页机制,例如,Oracle数据库的rownum,或者Mysql数据库中的limit等机制来完成分页操作。因为是对数据库的数据进行分页条件查询,所以叫物理分页。每一次物理分页都会去连接数据库。 优点:数据能够保证最新,由于根据分页条件会查询出少量的数据,所以不会占用太多的内存。 CTE(Common Table Expression,公用表表达式) 该表达式源自简单查询,可以认为是在单个 SELECT、INSERT、UPDATE、DELETE 或 CREATE VIEW 语句的执行范围内定义的临时结果集。CTE 与派生表类似,具体表现在不存储为对象,并且只在查询期间有效。与派生表的不同之处在于,CTE 可自引用,还可在同一查询中引用多次。 3 分页查询的好处 1,提升性能,减小内存的压力(减低宽带使用,提升访问速度)。一次查20个,比一次查20000个性能确定更好;另外若是数据量很大,一次性将内容都查询出来,查询出来的结果是放在内存里面的,内存没有这么大 2,根据用户的须要,提供适当的数据。如新闻,通常人可能只看最近前20条;若是咱们将后面的也都查询出来了,就是浪费 3,展示层面的考虑:若是一次展示太多的数据,不论是排版,仍是美观上都很差 4,查询效率快,由于只显示每页的条数,而不是把全部的数据加载出来,另外页面好看,好比几十万的数据,你不分页会把页面撑爆 4 实现思路 通过物理分页的方法进行数据库查询。 5 实现步骤 首先通过开发平台新建一个工程,使用新工程中的系统日志模块作为样例,进行mysql和oracle的分页查询功能 5.1 Mysql 在数据库中进行操作: mysql的分页查询是最简单的,借助关键字limit即可实现查询,查询语句通用形式: select o.* from (sql) o limit firstIndex,pageSize 其中的sql可以是单表查询的结果也可以是多表查询的结果 firstIndex为显示结果的起始位置(mysql是从0作为起始位置的) pageSize为显示记录数 直接对表进行查询如下,我们可以看到查询时间是0.005s![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
CopyRight 2018-2019 实验室设备网 版权所有 |