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

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)性能优化改写主要是针对问题去找到更加高效的方法去实现。

http://www.cnnetsun.cn/news/52948.html

相关文章:

  • 我终于停止写 JUnit 了!用 JavaParser + GPT-4 自动生成 90% 覆盖率的单元测试
  • 源码读不下去?阿里架构师教你“三步走”阅读法,彻底告别“打开源码就犯困”
  • 大梵公考:国考省考每一年的岗位一样吗?
  • 大梵公考:国考和省考二选一怎么选?
  • Java中如何检测死锁?如何预防和避免线程死锁?
  • Day32 类的定义和方法
  • 自动化测试-关键数据记录(日志+截图+页面源码)
  • IPv4地址与IPv6地址
  • 探索非线性电液伺服系统:从PID到反步控制的奇妙之旅
  • 使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 33--基础知识 8--切换窗口句柄
  • 某安全so库深度解析
  • vue基于Spring Boot框架的在线电影票购买系统的设计与实现_8xxt52nn
  • 在服务器上安装 aaPanel
  • Week 29: 深度学习补遗:MoE的稳定性机制与路由策略实现
  • 25年12月14日复盘总结,大盘方向,操作建议,板块机会,实用干货
  • what?动态规划?
  • CommonJS 的缓存机制:为什么二次 require 得到的对象是同一个?
  • 跨标签页通信的五种方案:LocalStorage、BroadcastChannel 与 SharedWorker
  • JavaScript 与 CSS 变量交互:利用 setProperty 动态修改 CSS 变量实现主题切换
  • 2、UNIX基础入门教程
  • 6、互联网通信全解析:从邮件到多媒体的多元世界
  • vue基于Spring Boot框架 农产品销售供应商管理系统_m11i2507_
  • 10、UNIX系统管理:技术与实践指南
  • vue基于SpringBoot的健身房管理系统设计与实现_45vy0km9_
  • 父子进程关系与终止机制详解
  • Qt面试题合集(一)
  • Claude vs ChatGPT vs Gemini:全方位对比与选用指南
  • 大模型量化技术原理-ZeroQuant系列(一)
  • RISCV的异常和中断
  • vue基于Spring Boot框架的水果商城设计与实现_6628xfyb_