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

崖山数据库-谓词没提前过滤优化器BUG

数据库版本崖山23.5.1SQL select * from v$version; BANNER VERSION_NUMBER ---------------------------------------------------------------- ----------------- Enterprise Edition Release 23.5.1.100 x86_64 23.5.1.100 1 row fetched.测试SQLselect * from test02 t2 where t2.data_object_id (select max(data_object_id) from test01 t3 where t3.object_id t2.object_id) and t2.owner SCOTT;执行计划SQL select * from test02 t2 where t2.data_object_id (select max(data_object_id) from test01 t3 where t3.object_id t2.object_id) and t2.owner SCOTT; 2 3 4 5 6 7 Execution Plan ---------------------------------------------------------------- SQL hash value: 3493843295 Optimizer: ADOPT_C ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | Id | Operation type | Name | Owner | E - Rows | A - Rows | Cost(%CPU) | A - Time | Loops | Memory | Disk | Partition info | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | | | 31| | 14233163| 32| 0| 0| | | 1 | SUBQUERY | QUERY[1] | | | 86987| | 14097886| 173974| 0| 0| | | 2 | AGGREGATE | | | 1| 86987| 5( 0)| 14069037| 173974| 0| 0| | |* 3 | TABLE ACCESS BY INDEX ROWID | TEST01 | SCOTT | 145| | 5( 0)| | | | | | |* 4 | INDEX RANGE SCAN | IDX_TEST01_OBJECT_ID | SCOTT | 446| 4696064| 1( 0)| 13655265| 4783051| 0| 0| | |* 5 | TABLE ACCESS FULL | TEST02 | SCOTT | 1| 31| 238( 0)| 14233153| 32| 0| 0| | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Operation Information (identified by operation id): --------------------------------------------------- 1 - Subquery NDV info - NDV percentage: 0.000011, NDV Expression: (T2.OBJECT_ID[OPTMZ-1]) 3 - Predicate : filter(T3.DATA_OBJECT_ID[OPTMZ-1] IS NOT NULL) 4 - Predicate : access(T3.OBJECT_ID T2.OBJECT_ID[OPTMZ-1][OPTMZ-2]) 5 - Predicate : filter(T2.DATA_OBJECT_ID[OPTMZ-1] QUERY[1][OPTMZ-0] AND T2.OWNER[OPTMZ-1] SCOTT[OPTMZ-0]) Statistics ---------------------------------------------------------------------------------------------------- 0 physical reads 44795489 db block gets 0 consistent gets 0 redo size 0 recursive calls 0 bytes sent via SQL*Net to client 0 bytes received via SQL*Net from client 0 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 31 rows processed 0 bytes sent via PX 0 block received 34 rows fetched. Elapsed: 00:00:14.238SQL耗时14秒正常来说应该秒杀才对改写(方法一)SQL select * from (select * from test02 where owner SCOTT and rownum 1) t2 where t2.data_object_id (select max(data_object_id) from test01 t3 where t3.object_id t2.object_id); 2 3 4 5 6 7 8 9 Execution Plan ---------------------------------------------------------------- SQL hash value: 2360477481 Optimizer: ADOPT_C ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | Id | Operation type | Name | Owner | E - Rows | A - Rows | Cost(%CPU) | A - Time | Loops | Memory | Disk | Partition info | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | | | 31| | 26400| 32| 0| 0| | | 1 | SUBQUERY | QUERY[1] | | | 36| | 20842| 72| 0| 0| | | 2 | AGGREGATE | | | 1| 36| 5( 0)| 20745| 72| 0| 0| | |* 3 | TABLE ACCESS BY INDEX ROWID | TEST01 | SCOTT | 145| | 5( 0)| | | | | | |* 4 | INDEX RANGE SCAN | IDX_TEST01_OBJECT_ID | SCOTT | 446| 15872| 1( 0)| 19480| 15908| 0| 0| | |* 5 | VIEW | | | 12| 31| 223( 0)| 26398| 32| 0| 0| | | 6 | COUNT | | | 12| 36| 216( 0)| 5418| 37| 0| 0| | |* 7 | RESULT | | | 12| 36| 216( 0)| 5410| 37| 0| 0| | |* 8 | TABLE ACCESS FULL | TEST02 | SCOTT | 36| 36| 216( 0)| 5390| 37| 0| 0| | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Operation Information (identified by operation id): --------------------------------------------------- 3 - Predicate : filter(T3.DATA_OBJECT_ID[OPTMZ-1] IS NOT NULL) 4 - Predicate : access(T3.OBJECT_ID TEST02.OBJECT_ID[OPTMZ-3][OPTMZ-2]) 5 - Predicate : filter(TEST02.DATA_OBJECT_ID[OPTMZ-3] QUERY[1][OPTMZ-0]) 7 - Predicate : filter(ROWNUM[OPTMZ-0] 1[OPTMZ-0]) 8 - Predicate : filter(TEST02.OWNER[OPTMZ-1] SCOTT[OPTMZ-0]) Statistics ---------------------------------------------------------------------------------------------------- 0 physical reads 19859 db block gets 0 consistent gets 0 redo size 0 recursive calls 0 bytes sent via SQL*Net to client 0 bytes received via SQL*Net from client 0 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 31 rows processed 0 bytes sent via PX 0 block received 38 rows fetched. Elapsed: 00:00:00.029改写(方法二)SQL select * from (select t2.*, (select max(data_object_id) from test01 t3 where t3.object_id t2.object_id) max_data_object_id from test02 t2) where data_object_id max_data_object_id and own 2 3 4 5 6 7 8 er SCOTT; Execution Plan ---------------------------------------------------------------- SQL hash value: 1214109186 Optimizer: ADOPT_C ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | Id | Operation type | Name | Owner | E - Rows | A - Rows | Cost(%CPU) | A - Time | Loops | Memory | Disk | Partition info | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | | | 31| | 19245| 32| 0| 0| | | 1 | SUBQUERY | QUERY[1] | | | 31| | 13584| 62| 0| 0| | | 2 | AGGREGATE | | | 1| 31| 5( 0)| 13568| 62| 0| 0| | |* 3 | TABLE ACCESS BY INDEX ROWID | TEST01 | SCOTT | 145| | 5( 0)| | | | | | |* 4 | INDEX RANGE SCAN | IDX_TEST01_OBJECT_ID | SCOTT | 446| 15872| 1( 0)| 12120| 15903| 0| 0| | |* 5 | VIEW | | | 12| 31| 225( 0)| 19242| 32| 0| 0| | |* 6 | TABLE ACCESS FULL | TEST02 | SCOTT | 12| 31| 218( 0)| 5533| 32| 0| 0| | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Operation Information (identified by operation id): --------------------------------------------------- 3 - Predicate : filter(T3.DATA_OBJECT_ID[OPTMZ-1] IS NOT NULL) 4 - Predicate : access(T3.OBJECT_ID T2.OBJECT_ID[OPTMZ-3][OPTMZ-2]) 5 - Predicate : filter(T2.DATA_OBJECT_ID[OPTMZ-3] QUERY[1][OPTMZ-2]) 6 - Predicate : filter(T2.OWNER[OPTMZ-1] SCOTT[OPTMZ-0] AND T2.DATA_OBJECT_ID[OPTMZ-1] IS NOT NULL) Statistics ---------------------------------------------------------------------------------------------------- 0 physical reads 17283 db block gets 0 consistent gets 0 redo size 0 recursive calls 0 bytes sent via SQL*Net to client 0 bytes received via SQL*Net from client 0 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 31 rows processed 0 bytes sent via PX 0 block received 35 rows fetched. Elapsed: 00:00:00.026结论看上去原始SQL没有提前过滤t2.owner ‘SCOTT’优化器有BUG

相关文章:

崖山数据库-谓词没提前过滤优化器BUG

数据库版本崖山23.5.1 SQL> select * from v$version;BANNER VERSION_NUMBER ---------------------------------------------------------------- ----------------- Enterprise Edition Release 23.5.1.1…...

告别混乱文件管理:用NERDTree打造VIM项目导航系统

告别混乱文件管理:用NERDTree打造VIM项目导航系统 每次打开一个包含数百个文件的复杂项目时,你是否会感到一阵眩晕?当你在多个目录间反复切换查找某个配置文件时,是否觉得时间在指尖悄然流逝?对于资深VIM用户而言&…...

QT6.5串口编程第一步:用CMakeLists.txt引入SerialPort模块的避坑指南

QT6.5串口编程避坑指南:CMakeLists.txt配置全解析 当你满怀期待地在QT6.5项目中引入串口通信功能,却在编译时遭遇"找不到QtSerialPort"的红色错误提示,这种挫败感我深有体会。作为一位经历过无数次类似"战斗"的开发者&am…...

FORK客户端与GitHub高效协作指南

1. 为什么选择FORK客户端与GitHub协作 作为一个常年混迹在代码仓库的老司机,我试过几乎所有主流的Git图形化工具。FORK客户端给我的第一印象就是——清爽。没有复杂的界面,没有多余的功能,就像它的名字一样,专注做好代码分支管理…...

uniapp 雪花算法封装类

1. uniapp 雪花算法封装类 雪花算法(SnowFlake)生成64位整数ID,具有全局唯一、趋势递增、高性能等特点,适合分布式系统。 1.1. 解决分布式全局唯一ID的方法 1.1.1. UUID UUID做全局ID的弊端:UUID是由数字加字母的形式组成,无法保持递增,它使得聚簇索引(主键值和行数据…...

3个创新方法:用Krita AI Diffusion插件实现智能动画制作

3个创新方法:用Krita AI Diffusion插件实现智能动画制作 【免费下载链接】krita-ai-diffusion Streamlined interface for generating images with AI in Krita. Inpaint and outpaint with optional text prompt, no tweaking required. 项目地址: https://gitco…...

n600高效涡流选粉机设计【说明书 CAD图纸 开题报告 任务书 实习报告】

n600高效涡流选粉机作为粉体分级领域的核心设备,其设计聚焦于提升分级精度与处理效率。该设备通过优化涡流场分布与颗粒运动轨迹,实现微细粉体的高效分离。其核心作用在于利用离心力和气流的复合作用,使不同粒径的颗粒在旋转流场中产生差异化…...

忍者像素绘卷镜像免配置部署:自动检测GPU型号并加载最优配置

忍者像素绘卷镜像免配置部署:自动检测GPU型号并加载最优配置 1. 产品概览:打破次元壁的像素艺术工作站 忍者像素绘卷是一款基于Z-Image-Turbo深度优化的图像生成工作站,专为像素艺术创作而设计。它将传统漫画创作与现代AI技术相结合&#x…...

XPath与lxml解析库

test.xml<?xml version"1.0" encoding"utf-8"?><bookstore><book name"halibote"><title lang"en">Harry Potter</title><author>J K. Rowling</author><year>2005</year>&l…...

Graphormer图神经网络效果展示:含手性中心/立体异构体分子的预测能力验证

Graphormer图神经网络效果展示&#xff1a;含手性中心/立体异构体分子的预测能力验证 1. 模型概述 Graphormer是一种基于纯Transformer架构的图神经网络&#xff0c;专门为分子图&#xff08;原子-键结构&#xff09;的全局结构建模与属性预测而设计。该模型在OGB&#xff08…...

Phi-3-mini-4k-instruct-gguf应用案例:HR招聘话术生成、产品FAQ自动整理、日报模板填充

Phi-3-mini-4k-instruct-gguf应用案例&#xff1a;HR招聘话术生成、产品FAQ自动整理、日报模板填充 1. 模型简介 Phi-3-mini-4k-instruct-gguf是微软推出的轻量级文本生成模型&#xff0c;特别适合处理问答、文本改写和内容整理等任务。这个GGUF版本的模型经过优化&#xff0…...

uniapp 如何实现google登录-安卓端

uniapp 如何实现google登录-安卓端 本文只讲解uniapp安卓端如何获取到idToken来实现登录&#xff0c;ios使用uniapp官方方法可以获取 海外app貌似最常用的就是邮箱登录&#xff0c;在app上表现出来最常用的就是谷歌一键登录&#xff0c;或者邮箱加网页验证&#xff1b;google登…...

AIVideo效果对比展示:不同参数下的视频生成质量评测

AIVideo效果对比展示&#xff1a;不同参数下的视频生成质量评测 1. 开场白&#xff1a;参数设置对视频效果的影响 你有没有遇到过这样的情况&#xff1a;用AI生成视频时&#xff0c;明明输入的内容一样&#xff0c;但出来的效果却天差地别&#xff1f;有时候画面模糊不清&…...

InternLM2-Chat-1.8B助力在线教育:个性化作业批改与学习反馈生成

InternLM2-Chat-1.8B助力在线教育&#xff1a;个性化作业批改与学习反馈生成 1. 引言&#xff1a;当作业批改遇上AI 想象一下&#xff0c;一位老师深夜还在批改几十份、甚至上百份学生作业。面对相似的错误&#xff0c;需要一遍遍写下相同的评语&#xff1b;面对有潜力的答案…...

WebAgent :基于 MCP 协议打造的智能应用“超级路由器”

本文由云软件体验技术团队李锦浩原创。 在 NextSDK 介绍文章里&#xff0c;我们聊了怎么用 opentiny/next-sdk 给前端页面快速接入智能化能力——几行代码嵌进去&#xff0c;用户扫个二维码&#xff0c;手机上就能弹出一个 Remoter 对话窗口&#xff0c;直接用自然语言远程操控…...

PNAS|收入不足对婴儿早期脑发育的影响

本文揭示了逆境在出生后最早期脑发育阶段中的关键作用。基于 Baby Steps 研究&#xff08;一项正在进行的纵向研究&#xff1b;在一所服务于贫困与压力发生率较高家庭的初级保健门诊中采集婴儿脑电&#xff08;EEG&#xff09;与社会经济地位相关数据&#xff09;的数据表明&am…...

汽车智能制造如何落地?从“黑灯工厂”看AI赋能的关键路径

一、当工厂学会在黑暗中自行运转偌大的汽车生产车间里&#xff0c;灯光熄灭&#xff0c;只有AGV小车穿梭的微光和机械臂有节奏的运作声。没有工人的手电筒&#xff0c;也没有巡检的脚步&#xff0c;一切生产、检测、调度都在黑灯状态下有条不紊地进行。这并非科幻电影&#xff…...

操作系统-lazy allocation

只有真正需要使用这些页的时候&#xff0c;才进行物理内存页的实际分配sbrk()在xv6操作系统中,进程的用户内存布局由代码段(text)、数据段(data)、堆区(heap)和栈区(stack)组成。sbrk()主要修改的是堆区的大小,堆在xv6中由低地址向高地址拓展。当程序调用sbrk(n)时,操作系统内核…...

太原烘焙培训排名

在太原选择烘焙培训机构时&#xff0c;许多朋友会关注不同机构的教学质量与特色。以下整理了一些选择时可以考虑的方面&#xff0c;供您参考。教学方式与内容部分机构采用以实操为主的教学模式&#xff0c;例如山西旭梦圆食品有限公司的课程安排中&#xff0c;实践操作占较大比…...

Java学习——String 类的不可变性、底层实现(JDK1.8+)

目录 一、核心定义与设计思想 1. 核心定义 2. 核心设计思想 二、底层实现原理&#xff08;含 JDK 源码分析 / 反编译验证&#xff09; 1. JDK1.8 String 核心源码解析 2. 字符串常量池&#xff08;JDK1.8 底层&#xff09; 3. 反编译验证&#xff08;不可变性 编译器优…...

Qwen3-TTS开源大模型效果展示:俄文/葡萄牙文/意大利文等小语种高自然度语音生成

Qwen3-TTS开源大模型效果展示&#xff1a;俄文/葡萄牙文/意大利文等小语种高自然度语音生成 你听过AI用俄语讲普希金的诗吗&#xff1f;或者用意大利语念一段歌剧台词&#xff1f;过去&#xff0c;想让AI生成地道的小语种语音&#xff0c;要么音色机械&#xff0c;要么口音奇怪…...

AntdUI实战:用WinForm和.NET 6给老旧内部管理系统“换肤”的完整记录

AntdUI实战&#xff1a;用WinForm和.NET 6给老旧内部管理系统“换肤”的完整记录 当企业内部的WinForm系统运行超过十年&#xff0c;那些灰底蓝框的界面早已与现代审美格格不入。去年接手某制造业ERP系统改造时&#xff0c;我面对的是一个基于.NET Framework 4.0的"古董&q…...

万象视界灵坛效果展示:血条式置信度进度条与‘同步率’动态分布图实录

万象视界灵坛效果展示&#xff1a;血条式置信度进度条与同步率动态分布图实录 1. 平台概览 万象视界灵坛&#xff08;Omni-Vision Sanctuary&#xff09;是一款基于OpenAI CLIP技术的高级多模态智能感知平台。不同于传统视觉识别工具的单调界面&#xff0c;它将复杂的"语…...

Gemma-3 Pixel Studio实战教程:离线模式部署与本地模型权重缓存策略

Gemma-3 Pixel Studio实战教程&#xff1a;离线模式部署与本地模型权重缓存策略 1. 项目概述与核心价值 Gemma-3 Pixel Studio是基于Google最新开源Gemma-3-12b-it模型构建的多模态对话终端&#xff0c;将强大的文本理解能力与视觉感知功能完美结合。与传统对话系统相比&…...

Qwen3-0.6B-FP8应用场景:开发者测试LLM应用前端UI兼容性的沙盒环境

Qwen3-0.6B-FP8应用场景&#xff1a;开发者测试LLM应用前端UI兼容性的沙盒环境 1. 引言&#xff1a;为什么需要一个轻量级的“测试沙盒”&#xff1f; 如果你正在开发一个基于大语言模型的应用&#xff0c;比如一个智能客服系统、一个文档助手&#xff0c;或者一个创意写作工…...

手把手教你用Flotherm做热管仿真

&#x1f393;作者简介&#xff1a;科技自媒体优质创作者 &#x1f310;个人主页&#xff1a;莱歌数字-CSDN博客 &#x1f48c;公众号&#xff1a;莱歌数字&#xff08;B站同名&#xff09; &#x1f4f1;个人微信&#xff1a;yanshanYH 211、985硕士&#xff0c;从业16年 从…...

OpenRGB:开源跨平台RGB灯光控制方案,告别多软件困扰实现设备统一管理

OpenRGB&#xff1a;开源跨平台RGB灯光控制方案&#xff0c;告别多软件困扰实现设备统一管理 【免费下载链接】OpenRGB Open source RGB lighting control that doesnt depend on manufacturer software. Supports Windows, Linux, MacOS. Mirror of https://gitlab.com/CalcPr…...

深入ELF文件:从rpath和interpreter看懂Linux程序如何‘找到家’

深入ELF文件&#xff1a;从rpath和interpreter看懂Linux程序如何‘找到家’ 在Linux系统中&#xff0c;每个可执行程序背后都隐藏着一个精巧的加载机制。当你在终端输入一个命令时&#xff0c;系统如何找到并加载程序所需的所有组件&#xff1f;这背后是ELF&#xff08;Execut…...

DanKoe 视频笔记:原创思维指南:如何进行原创思考

在本教程中&#xff0c;我们将学习如何摆脱思维定式&#xff0c;培养真正的原创思考能力。我们将探讨为何独立思考如此困难&#xff0c;并提供一套实用的方法来帮助你形成自己的观点、连接不同领域的知识&#xff0c;并最终创造出有价值的内容。 概述 每个人都希望成为一个原创…...

[模电]从PN结到实用电路:二极管的深度解析与设计指南

1. PN结&#xff1a;二极管的物理基础 想象一下把一块P型半导体和N型半导体紧密贴合在一起&#xff0c;就像把两块不同颜色的橡皮泥揉捏在一起。P型半导体里充满了带正电的"空穴"&#xff08;可以理解为缺少电子的位置&#xff09;&#xff0c;而N型半导体则富含自由…...