百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

优化体系--Oracle分页查询的3种实现方案,值得收藏

mhr18 2024-10-01 12:19 16 浏览 0 评论

概述

今天主要介绍一下Oracle的分页的一个实现方式,也是最近在做部门培训时介绍的一个新特性,下面介绍下测试的一个实验。


1、环境准备

准备测试数据267万

CREATE TABLE t AS SELECT ROWNUM ID, A.* FROM DBA_OBJECTS A;
insert into t select * from t;
/
/
.....

2、需求

需求:按照对象ID排序,取第21条到30条记录。

大家可以思考下碰到这种情况应该怎么实现?


3、实现方案1

这里用rownum分页查询的写法实现:

set timing on;
SELECT OBJECT_ID, OBJECT_NAME FROM (SELECT ROWNUM RN, A.* FROM (SELECT OBJECT_ID, OBJECT_NAME FROM T ORDER BY OBJECT_ID) A WHERE ROWNUM <= 30) WHERE RN > 20;

查看执行计划


4、实现方案2

这里主要用前面介绍的分析函数实现:

SET TIMING ON;
SELECT OBJECT_ID, OBJECT_NAME FROM (SELECT ROW_NUMBER() OVER(ORDER BY OBJECT_ID) RN, OBJECT_ID, OBJECT_NAME FROM T) WHERE RN <= 30 AND RN > 20;

查看执行计划:

性能倒没有太大的变化


5、实现方案3

Database 12c的FETCH FIRST ROWS特性可以简化老版本中ROW_NUM()或ROWNUM的分页排序写法, 大幅节约开发花在分页查询语句上的时间。

row-limiting子句用以限制某个查询返回的行数

  • 可以通过FETCH FIRST/NEXT关键字指定返回结果的行数
  • 可以通过PERCENT关键字指定返回结果的行数比例
  • 可以通过OFFSET关键字指定返回从结果集中的某一行之后行数

12c row-limiting子句对于排序数据限制返回行今后会广泛使用(MySQL上早就有的特性,MySQL开发该特性可能是特别考虑到对于网站分页查询的简化),也可以被称作Top-N查询。

这个是属于12c的新特性了,刚好没有相关环境,所以就不列出执行计划了。

SET TIMING ON;
--12c才有
SELECT OBJECT_ID, OBJECT_NAME FROM T ORDER BY OBJECT_ID OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY;

加上前面主要分享了4个Oracle的新特性,这4个新特性都有不同的应用场景,建议大家多去练习掌握。后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注一下~


相关推荐

skywalking-全链路跟踪(链路追踪sleuth)

一、概述1、skywalking简介SkyWalking是一款广受欢迎的国产APM(ApplicationPerformanceMonitoring,应用性能监控)产品,主要针对微服务、Clou...

Oracle项目管理系统之成本状态跟踪

卷首语成本费用管理模块功能分为公司级、项目级两个层级,其中公司级功能包括概预算管理、概预算定额管理、预算模板管理,以及控制估算管理等功能。费用与成本成本费用管理主要是为了合理利用资金资源,控制企业的成...

从入门到精通,Java最全学习路线(java自学路线)

最近好多小伙伴询问,该如何学习java?那些视频适合零基础学习呢?大多数都是一些刚入门的新手,还不了解这个行业,也不知道从何学起,开始的时候非常迷茫,在这给大家整理出一些学习路线。Java学习路线在这...

SPARC M7最新技术 甲骨文首度在台发表

甲骨文首度在台发表SPARCM7最新技术,宣布推出全新SPARC系统產品系列,採用革命性的32内核、256执行绪SPARCM7微处理器。这套SPARC系统提供:先进的入侵防护和加密的Securit...

轻量化的企业级OLAP方案2(轻量化ar)

上一篇文章讲了一个轻量化的企业级OLAP方案,这一篇文章继续介绍另外一个方案。方案2:Greenplum1Greenplum介绍1.1Greenplum概念Greenplum数据库是一种基于Po...

时序数据库在水电站领域的应用(时序数据库优缺点)

大家好,上期经过了王宏志教授对数据库前沿领域的介绍,不知道小伙伴们是否对数据库领域有了更深的认识呢,本期让我们回归时序数据库,再来聊一聊时序数据库在水电站领域的应用。本文仅代表个人观点,如有偏颇之处,...

数据库SQL引擎比较(数据库引擎有哪些,有什么区别)

数据库SQL引擎的典型工作机制及详细分析如下,涵盖查询处理全流程中的核心机制与实际案例:一、SQL引擎核心处理流程1.解析与校验阶段词法/语法解析:SQL语句被拆解为Token序列,构建...

Ubuntu系统密码(root密码)的修改方法

本文介绍在Linux系统的Ubuntu电脑中,修改账户用户密码(同时也修改了root用户密码)的方法。首先,如果此时处于登录页面(也就是意识到自己忘记密码的那个页面),就先点击右上角的关闭按钮...

TablePlus:一个跨平台的数据库管理工具

TablePlus是一款现代化的跨平台(Window、Linux、macOS、iOS)数据库管理工具,提供直观的界面和强大的功能,可以帮助用户轻松管理和操作数据库。TablePlus免费版可以永久...

云满足用户对通过单一视图了解整体运营和数据的需求

ZD至顶网软件频道消息:云在简化IT和业务的同时也带来了新问题,这很有趣,不是吗?毫无疑问,云大幅降低了企业运行基础设施和应用的复杂性和成本;但您仍然面临一个老生常谈的问题——孤岛,只不过这次是在云...

SQL_TOP(显示数据条数)(sqlserver显示查询的行数)

(8)SELECT(9)DISTINCT(11)<topNum><selectlist>(1)FROM[left_table](3)<join_type>...

php搭建小型部门网站(php构建网站)

熟悉前端html,js,css,后端熟悉php,python,java只能称得上一般,还有很多坑待踩。鉴于所学很杂,决定利用对业务的熟悉来搞一个部门网站来简化大家的工作流程。初步设计方案后端用p...

会SQL语句,就能快速开放你的数据接口API

会SQL,就能开放你的数据API接口如果你是非技术开发工程,不熟悉Java、PHP、Python、Golang这些后端的编程语言,但熟悉MySQL、Oracle、SQLServer、PostgreS...

推荐8款好用的Web版SQL工具,建议收藏

你使用过WebSQL版的SQL工具吗?开发人员在更换设备或重新安装系统时,通常需要花费大量时间来重新配置环境,既繁琐又浪费时间。使用Web版SQL开发工具可以完美解决这个问题!它支持远程访问,无需安...

黑客不会告诉你的10个Linux渗透测试工具

凌晨两点,我盯着目标企业的边界防火墙日志——所有端口都被封禁,IDS(入侵检测系统)警报安静得诡异。正当我以为这是一场“不可能完成”的渗透测试时,搭档发来一条消息:“试试LinPEAS,你可能会发现惊...

取消回复欢迎 发表评论: