首页 > 数据库 >MySQL优化--NOT EXISTS和LEFT JOIN方式差异

MySQL优化--NOT EXISTS和LEFT JOIN方式差异

时间:2022-10-26 15:45:19浏览次数:50  
标签:Sending JOIN EXISTS 方式 -- blog LEFT

两种执行方式对比:
1、从执行计划来看,两个表都使用了索引,区别在于NOT EXISTS使用“DEPENDENT SUBQUERY”方式,而LEFT JOIN使用普通表关联的方式
2、从执行过程来看,LEFT JOIN方式主要消耗Sending data的上,在NOT EXISTS方式主要消耗在"executing"和“Sending data”两项上,受限于PROFILE只能记录100行结果,因此超过57万个"executing"和“Sending data”的组合项没有显示,虽然每次"executing"和“Sending data”的组合项消耗时间较少(约50毫秒),但由于执行次数较高,导致最终执行时间较长(50μs*578436=28921800us=28.92s)
如何在NOT EXISTS和LEFT JOIN中选择:
1、当外层数据较少时,子查询循环次数较少,使用NOT EXISTS并不会导致严重的性能问题,推荐使用NOT EXISTS方式。
2、当外层数据较大时,子查询消耗随外层数据量递增,查询性能较差,推荐使用LEFT JOIN方式
总结:
按照存在即合理是客观唯心主义的理论,NOT EXISTS以更直观地方式实现业务需求,在SQL复杂度上要远低于LEFT JOIN,且在生产执行计划时,NOT EXISTS方式相对更稳定些,LEFT JOIN可能会随统计信息变化而生产不同的执行计划。

参考文档:
https://www.cnblogs.com/TeyGao/p/9167519.html
https://blog.csdn.net/weixin_41431016/article/details/109666504
https://blog.csdn.net/JanHezz/article/details/108514520?spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-3-108514520-blog-109666504.t5_landing_title_tags_v3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-3-108514520-blog-109666504.t5_landing_title_tags_v3&utm_relevant_index=4

 

标签:Sending,JOIN,EXISTS,方式,--,blog,LEFT
From: https://www.cnblogs.com/jelly12345/p/16828625.html

相关文章

  • phpstudy集成工具 vscode 插件phpdebug+php拓展xdebug调试
    vscode需要安装phpdebug 服务器环境需要支持xdebugphp.ini配置设置 必须xdebug.remote_enable=Onxdebug.remote_autostart=On注意端口要和launch.json配置......
  • springboot2 jackson 实现动态返回类字段
    问题与需求自从前后端分离的开发模式广泛普及之后,JSON便成为了端到端交互的首选数据结构。我们在使用java开发后端接口的时候,往往会出现我们一个类有十来个字段,但是前......
  • 四位数字的吸血鬼数字
    publicclassXYG{publicstaticvoidmain(String[]arg){String[]ar_str1,ar_str2;intsum=0;intfrom;intto;inti_val;intc......
  • 用昇腾AI护航“井下安全”
    摘要:基于CANN(异构计算架构)打造的“智能矿山安全生产管理平台”,能够更便捷和更高效地服务于更多矿山安全生产建设。本文分享自华为云社区《华为携手云话科技助力矿山智能化......
  • intro
    IntroHello!欢迎来到PeterLiu的博客!欢迎在GitHub上关注我如果需要联系我可以发邮件至[email protected]!创建本博客的初衷是分享一些日常所学和遇到的小......
  • 麒麟系统开发笔记(九):在国产麒麟系统上搭建宇视摄像头SDK基础环境Demo
    前言  国产麒麟系统开发上,使用宇视摄像头,本篇使用宇视官网的提供的SDK,搭建基础的国产系统上宇视摄像头SDK开发化境Demo。<br>效果演示  <br>宇视SDK下载  官方......
  • 华为云ECS,如何助力数字化企业创新发展​
    华为云ECS,如何助力数字化企业创新发展​在网络信息技术高速发展的时代,现代化企业的业务类型越来越复杂多样,除了简单地将线下业务转为云上业务,现代化企业云上业务的运行往往......
  • 在Linux命令行中查找空目录
    在Linux系统中,出现空的目录这是很正常的事情,而且,也是有办法一次性把它们都找出来的。但是,仅仅列出空目录并不是我们的目的,我们今天了解一下如何删除这些空的目录。1、在Li......
  • 特征平台在数禾的建设与应用
    本篇文章为数禾科技数据开发专家杨涵冰的演讲内容整理。主要内容包括:特征平台概览特征存储服务流批一体方案模型策略调用方案​​点击查看更多技术内容​​一、特征平台概览......
  • sed 删除 插入 行首/尾 添加
    替换:sed-i's/a/b/g'/root/abc.txt把/root/abc.txt文件中的所有a替换成bsed-i'11s#a#b#'/root/abc.txt把/root/abc.txt文件中第11行中的a替换成bsed-i'#ccc/s/^......