news 2026/3/27 23:01:07

like关联改写

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
like关联改写

1、 等价转换
instr:字符串查找函数

INSTR(string,substring [,start_position [,occurrence [,return_option]]])string:源字符串substring:要查找的子串start_position:可选,开始搜索的位置(默认1,负数表示从末尾开始)occurrence:可选,指定查找第几次出现(默认1)return_option:可选,0=返回子串起始位置,1=返回子串结束位置

substr: 字符串截取函数

SUBSTR(string,start_position [,length])string:源字符串start_position:开始位置(正数从开头,负数从末尾)length:可选,要截取的长度(默认到字符串结尾)

LIKE:模糊匹配
其三者之间的转换

2、 问题语句

这里问题在于驱动表为t2,index join次数100万次,前面说过与substr和instr可以等价转换,这里想要转换驱动表,那么就需要用substr。
3、 改写

这里与预期的一样驱动表变为t1表,index join次数降下来,另外注意的是,susbtr获取定长的情况下才做index join,因此这里结合业务可以知道是获取4个字节长度。执行时间从原来的10s下降到0.5s
如果是不定长,大家可以感受一下

这里没有做成index join,而是做成nest loop,反而效率下降了。

4、 小结

(1)Like、substr和instr之间可以相互转换。
(2)substr获取是定长的字符串时可以利用索引做索引连接。
(3)性能优化改写主要是针对问题去找到更加高效的方法去实现。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/21 0:51:09

std::promise 重难点

std::promise 重难点全拆解 std::promise 是 C11 异步编程的核心组件,但其难点不在于语法本身,而在于状态管理、生命周期控制、异常传递等“隐性规则”——踩中任何一个都可能导致程序崩溃或逻辑异常。本文用“专业底层逻辑通俗比喻分步实操”的方式&…

作者头像 李华
网站建设 2026/3/14 8:39:42

基于单片机的PID调节脉动真空灭菌器上位机远程监控设计

基于单片机的PID调节脉动真空灭菌器上位机远程监控设计概述 点击链接下载设计资料:https://download.csdn.net/download/qq_39020934/92091240 1.1 研究背景与设计意义 脉动真空灭菌器广泛应用于医疗器械、生物实验室以及制药行业,是保证器械和材料无菌…

作者头像 李华
网站建设 2026/3/14 8:39:40

每日一个C++知识点|异步编程

上篇文章说到C多线程的基础知识, 这篇文章主要说C多线程的另一个重要知识–异步 异步 那么什么是异步呢? 当程序执行一个耗时任务的时候, 主线程硬生生等待线程任务结束,不仅效率低, 还会让程序响应变得卡顿 这时候我们可以使用异步编程来解决这个问题,异步编程的核心就是非阻…

作者头像 李华
网站建设 2026/3/21 21:02:01

探索非线性电液伺服系统:基于ESO的反步滑模控制之旅

非线性电液伺服系统,基于ESO(扩张状态观测器)的反步滑模控制。 pdf教程matlab/simulink源程序。 s—函数搭建 1.通过扩展状态观测器估计速度、加速度和总扰动; 2.根据在线估计的系统模型,设计包含反步控制和滑模控制的控制率,对实际系统进行控…

作者头像 李华