1、 问题

以下的例子如何优化呢?

SELECT * FROM(SELECT INNER_TABLE.*, ROWNUM OUTER_TABLE_ROWNUM FROM (SELECT t1.* FROM ( SELECT * FROM  T1  ) t1  WHERE 1 = 1 ORDER BY T1.TTIME DESC)INNER_TABLE ) OUTER_TABLE WHERE OUTER_TABLE_ROWNUM<=25AND OUTER_TABLE_ROWNUM >0

在这里插入图片描述

这个语句是单表全表查询排序后分页获取数据,似乎看起来没什么优化空间。分页获取前25行数据,相当于从按ttime排序后,从这批有序的数据中获取前25行数据,这里我们可以想到索引是有序的,而要提前获取数据,在达梦数据库里需要用到以下两个参数TOP_ORDER_OPT_FLAG/TOP_ORDER_ESTIMATE_CARD

2、TOP_ORDER_OPT_FLAG/TOP_ORDER_ESTIMATE_CARD

参数参数含义
TOP_ORDER_OPT_FLAG优化带有 TOP 和 ORDER BY 子句的查询,使得 SORT 操作符可以省略。优化的效果是尽量使得 ORDER BY 的排序列所对应的基表可以使用包含排序列的索引,从而可以移除排序 SORT 操作符,减少排序操作。如果排序列不属于同一个基表,或者排序列不是基表列,则无法进行优化。0:不启用该优化; 1:对最优索引进行优化; 2:优先选择与排序列一致的可以消除排序的索引进行优化
TOP_ORDER_ESTIMATE_CARDTOP_ORDER_OPT_FLAG=1/2 命中优化时,设置叶子节点的预估扫描行数。下层操作符不是简单的BT时,如果优化器预估行数不准,可帮助优化器调整,以便选择最优计划。默认300。

以上摘自《达梦数据库管理员手册》
接下来我们来看看其优化效果
首先我们创建order by中列的索引

CREATE OR REPLACE  INDEX "IDX_DM_T1" ON "T1"("TTIME" DESC)global;

然后我们使用hint看看其效果

SELECT /*+TOP_ORDER_OPT_FLAG(2)*/* FROM(SELECT INNER_TABLE.*, ROWNUM OUTER_TABLE_ROWNUM FROM (SELECT t1.* FROM ( SELECT * FROM  T1  ) t1  WHERE 1 = 1 ORDER BY T1.TTIME DESC)INNER_TABLE ) OUTER_TABLE WHERE OUTER_TABLE_ROWNUM<=25AND OUTER_TABLE_ROWNUM >0

在这里插入图片描述

这里提前获取300行数据,然后再分页取得25行,300也就是TOP_ORDER_ESTIMATE_CARD的配置。

3、小结

假设单表大表排序分页提前获取前几十行数据。通过增加排序列索引加上top_order_opt_flag=2即可达到优化效果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/89840.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/89840.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/89840.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Oracle触发器:数据世界的“隐形守护者“

今天&#xff0c;我想和大家聊一个在Oracle数据库领域既强大又神秘的话题——触发器&#xff08;Trigger&#xff09;​。在座的各位可能都写过SQL语句&#xff0c;做过表结构设计&#xff0c;甚至用过存储过程&#xff0c;但有很多人对触发器的态度可能是"既爱又怕"…

Python桌面版数独游戏(三版)-增加难易度模式

数独游戏难度模式解析 在数独游戏中&#xff0c;难度通常由已知数字&#xff08;提示数&#xff09;的数量决定。难度越高&#xff0c;已知数字越少&#xff0c;玩家需要推理的步骤越多。以下是不同模式下的算法区别和核心代码解析。 文章目录数独游戏难度模式解析1. **难度模…

k8s查看某个pod的svc

在 Kubernetes 中&#xff0c;要查看与特定 Pod 相关的 Service&#xff0c;可以通过以下方法&#xff1a;#### 方法一&#xff1a;通过标签匹配1. **获取 Pod 的标签**bashkubectl get pod <pod-name> --show-labels输出示例&#xff1a;NAME READY STATUS RESTARTS AGE…

通俗易懂卷积神经网络(CNN)指南

本文用直观类比和可视化方法&#xff0c;帮你彻底理解CNN的工作原理&#xff0c;无需深厚数学基础也能掌握计算机视觉的核心技术。卷积神经网络&#xff08;CNN&#xff09;是深度学习中革命性的架构&#xff0c;它彻底改变了计算机"看世界"的方式。本文将用最直观的…

AV1平滑缓冲区

对于解码的每一帧视频数据&#xff0c;解码器都必须从缓冲池中找到一个尚未被使用的帧缓冲区插槽来存储解码后的数据。分配的帧缓冲区插槽用于临时保存解码过程中生成的帧数据&#xff0c;直到它们被用于显示或进一步的处理。函数get_free_buffer的作用是在缓冲池中搜索尚未被分…

Python并发编程:突破GIL枷锁,高效利用多核CPU

解密concurrent.futures的双引擎&#xff1a;线程池与进程池的明智选择在Python并发编程领域&#xff0c;concurrent.futures模块堪称利器&#xff0c;但如何正确使用其两大核心组件——ThreadPoolExecutor和ProcessPoolExecutor&#xff0c;却让许多开发者困惑。本文将深入剖析…

在Windows Server 2012 R2中安装与配置IIS服务并部署mssql靶机教程

在Windows Server 2012 R2中安装与配置IIS服务全指南 IIS&#xff08;Internet Information Services&#xff09;作为Windows系统自带的Web服务组件&#xff0c;在企业级Web部署、内网服务搭建等场景中应用广泛。本文将详细介绍在Windows Server 2012 R2中安装IIS服务的完整流…

C#/.NET/.NET Core技术前沿周刊 | 第 47 期(2025年7.14-7.20)

前言 C#/.NET/.NET Core技术前沿周刊&#xff0c;你的每周技术指南针&#xff01;记录、追踪C#/.NET/.NET Core领域、生态的每周最新、最实用、最有价值的技术文章、社区动态、优质项目和学习资源等。让你时刻站在技术前沿&#xff0c;助力技术成长与视野拓宽。 欢迎投稿、推荐…

一.AD域与DFS集群-AD域安装

目录 1.网络规划 2.主域控安装 3.辅助域控安装 1.网络规划 服务器名称IP地址DNS名称主域控192.168.188.2pdc.test.cn辅助域控192.168.188.3bdc.test.cnDFS1192.168.188.4dfs1.test.cnDFS2192.168.188.5dfs2.test.cn 服务器系统版本为windows server 2022 2.主域控安装 第一…

BUUCTF在线评测-练习场-WebCTF习题[BSidesCF 2020]Had a bad day1-flag获取、解析

解题思路打开靶场&#xff0c;作者对我们进行了亲切的关怀老规矩查看源码、抓包并没有发现什么猫腻点下面两个按钮会出现猫猫狗狗的图片&#xff0c;此时我们发现url多了个 参数category那么比较明显就是提示我们是任意文件包含、任意文件读取漏洞了找不到任何信息&#xff0c;…

stm32mp157f-dk2安装镜像并且部署qt全流程

在网上看的关于stm32mp157的开发教程太少了&#xff0c;于是乎写一篇踩坑笔记&#xff0c;仅供学习参考 大概流程&#xff1a;在虚拟机通过stm32cubeprogrammer烧录镜像&#xff0c;然后烧录成功之后&#xff0c;给stm32mp157连接网线&#xff0c;使得开发板有ip地址&#xff…

遗像照片尺寸要求及手机制作打印方法

遗像作为寄托哀思的重要载体&#xff0c;其规格和质量都有严格要求。本文将详细介绍遗像照片的标准尺寸规范&#xff0c;并提供使用手机快速制作合规遗像的完整方案。一、遗像照片的标准尺寸要求遗像照片的尺寸主要分为传统黑白遗像和现代彩色遗像两种规格。传统黑白遗像一般采…

适配器模式 (Adapter Pattern)

适配器模式 (Adapter Pattern) 适配器模式是一种结构型设计模式&#xff0c;用于解决两个不兼容接口之间的兼容性问题&#xff0c;充当两个不同接口之间的桥梁。 &#x1f31f; 核心思想转换接口&#xff1a;将一个类的接口转换成客户端期望的另一个接口&#xff0c;使原本不兼…

03-虚幻引擎蓝图类的各父类作用讲解

虚幻引擎&#xff08;Unreal Engine&#xff09;的蓝图系统提供了多种父类&#xff0c;每种父类都有其特定的用途和生命周期。理解这些父类的作用&#xff0c;是高效使用蓝图开发游戏的基础。以下是虚幻引擎中常见蓝图父类的详细讲解&#xff1a;1. Actor 作用&#xff1a;所有…

141 个 LangChain4j Maven 组件分类解析、多场景实战攻略

141 个 LangChain4j Maven 组件分类解析、多场景实战攻略 文章目录 141 个 LangChain4j Maven 组件分类解析、多场景实战攻略 1. 引言 2. LangChain4j 组件分类 2.1. 核心模块 (Core Modules) 2.2. LLM 集成 (LLM Integrations) 2.3. 向量存储集成 (Embedding Store Integratio…

Python可迭代归约函数深度解析:从all到sorted的进阶指南

在Python中&#xff0c;归约函数&#xff08;Reduction Functions&#xff09;是处理可迭代对象的利器。它们通过遍历元素并逐步收敛为单个结果&#xff0c;广泛应用于数据分析、逻辑判断和数值计算等场景。本文将系统梳理这些函数的核心特性、使用技巧及底层逻辑&#xff0c;助…

大带宽服务器都有哪些应用场景?

大带宽服务器凭借着高速的数据传输能力和强大的网络承载能力&#xff0c;通常被企业应用在需要高流量和高并发处理能力的业务场景当中&#xff0c;下面&#xff0c;就让我们共同了解一下大带宽服务器的应用场景吧&#xff01;首先&#xff0c;随着科学技术的快速发展&#xff0…

爬虫实战指南:从定位数据到解析请求的全流程解析

爬虫的本质是什么&#xff1f; 爬虫的本质就是用代码模拟人类在浏览器里的操作&#xff0c;像点击网页、填写表单、提交数据等行为&#xff0c;自动化地进行网页数据的获取和处理。比如&#xff1a; 发送 GET 请求 来请求网页内容&#xff0c;相当于你在浏览器地址栏输入网址…

Sentinel dashboard 添加context-path后无法信息无法上传问题

Sentinel dashboard 添加context-path后无法加载问题 添加server.servlet.context-path/sentinel后可以正常访问&#xff0c;但是客户端启动后信息上报失败。 transport: dashboard: localhost:8858/sentinel 经查阅文档需要加入api-path&#xff0c;但是我配置提示无api-path所…

iOS —— 3Gshare项目总结与思考

登陆注册及推出主页面这部分有两种写法&#xff1a;一种是在SceneDelegate中推出LoginVC&#xff0c;后在判断登陆成功后退去主要程序。另一种则是先加载主程序&#xff0c;后推出登陆页面。通过同组同学实践证明&#xff0c;后者在推出登陆页面时会闪一下&#xff0c;因此还是…