问题现象:采用子查询的DELETE执行得非常慢,改写成SELECT后执行却很快,最后把这个子查询DELETE改写成JOIN优化过程

1.问题描述:

采用子查询的DELETE执行语句,执行效率非常慢;但把DELETE换成SELECT后,执行秒出结果,这是何故?遂查看执行计划:

可以看下执行计划,看下type类型:ALL应该是全表扫描,rows为几千万的话,所以执行效率很慢

改成SELECT后,执行计划如下变为:type=ref 基于主键的等值查询,rows为几百条,所以节省很多效率;

2.优化思路:

既然这个SQL把DELETE改成SELECT后执行效率就可以获得很大提升,除此外没特别区别,可能是查询优化器方面有些不足,导致无法直接优化,就得另想办法了。我们的思路是把基于子查询的DELETE简化改写成多表JOIN后DELETE(一般来说,子查询效率比较低的话,可以考虑改写成JOIN),多表DELETE的语法课参考:https://dev.mysql.com/doc/refman/5.7/en/delete.html#idm140469624466800,例如这样的:

DELETE t1 FROM t1 LEFT JOIN t2 ON t1.id=t2.id WHERE t2.id IS NULL

mysql delete删除速度慢_MYSQL-DELETE优化相关推荐

  1. js delete删除对象属性,delete删除不了变量及原型链中的变量

    js delete删除对象属性,delete删除不了变量及原型链中的变量 一.delete删除对象属性 function fun(){this.name = 'gg';}var obj = new f ...

  2. mysql表删除回滚_MySQL删除表的三种方式(小结)

    drop table drop 是直接删除表信息,速度最快,但是无法找回数据 例如删除 user 表: drop table user; truncate (table) truncate 是删除表数 ...

  3. mysql级联删除报1451 - Cannot delete or update a parent row: a foreign key constrain

    我的解决办法是运行语句SET foreign_key_checks = 0;接触约束: 参考博客https://blog.csdn.net/u010429286/article/details/790 ...

  4. mysql群删除记录查询_mysql那些招:执行大批量删除、查询和索引等操作

    类型:数据库类大小:1.7M语言:英文 评分:6.6 标签: 立即下载 mysql执行大批量删除 执行大批量删除的时候注意要使用上limit 因为如果不用limit,删除大量数据很有可能造成死锁 如果 ...

  5. mysql 非自然月统计_MySQL性能优化 — 实践篇1

    点赞再看,养成习惯,微信搜一搜[一角钱小助手]关注更多原创技术文章. 本文 GitHub org_hejianhui/JavaStudy 已收录,有我的系列文章. 前言 MySQL索引底层数据结构与算 ...

  6. mysql属性配置提高查询_MYSQL性能优化-安装时优化参数配置提高服务性能

    MYSQL性能优化一直是个头痛的问题,目前大多都是直接把页面html静态页面或直接使用了缓存技术,下面我就mysql本身的性能优化来分享一下. 安装时优化参数配置提高服务性能 在Linux下安装Mys ...

  7. mysql索引 删除和创建_mysql索引和唯一索引的创建和删除

    一.本机环境 二.索引的创建删除 三.唯一索引的创建和删除 一.本机环境 系统环境:linux centos 7.2 mysql版本:mysql-5.7.9 安装目录:/application/mys ...

  8. mysql 事务 innodb 锁表_MySQL性能优化之Innodb事务系统,值得收藏

    概述 今天主要分享下Innodb事务系统的一些优化相关,以下基于mysql 5.7. Innodb中的事务.视图.多版本 1.事务 在Innodb中,每次开启一个事务时,都会为该session分配一个 ...

  9. mysql怎样删除上一行_mysql如何删除第一行数据

    我就废话不多说了,大家还是直接看代码吧~create or replace function aa1(a1 integer[],a2 bigint) returns void AS $$declare ...

最新文章

  1. libcurl选项CURLOPT_WRITEDATA中的“坑”
  2. Python编程神器Jupyter Notebook使用的28个秘诀(附代码)
  3. boost::histogram::algorithm::project用法的测试程序
  4. C++女程序员一个人留在北京
  5. 八数码——路径寻找问题
  6. 上新啦!OpenMMLab全面更新!
  7. Spring(4)--- hello world实例
  8. Day46:数据库引擎、索引、pymysql
  9. PUT 还是 POST ?
  10. LTE 注网流程log分析
  11. intel服务器最新主板芯片组,Intel C200芯片组:入门级、发烧友至爱_Intel服务器主板_服务器评测与技术-中关村在线...
  12. BGP和BGP机房各为什么?优势在哪?
  13. 程序员夏天穿格子衫,那么冬天穿什么?答案扎心了哈哈哈哈
  14. 开启FTP的21端口
  15. icloud连接服务器时出现问题_iphone8 icloud连接服务器时出现问题
  16. c语言实现定积分运算
  17. 通过web修改AD账号密码(无需第三方工具)
  18. linux虚拟桌面设置不同的背景,虚拟桌面增强器为Windows 10中的每个虚拟桌面设置不同的壁纸 | MOS86...
  19. 解决使用打印机打印网页时字体颜色变淡的问题
  20. Improving Deep Neural Networks:Initialization and Regularization

热门文章

  1. 分享几个好看的Bootstrap后台管理响应式模板
  2. RTP打包发送H264(下)
  3. 用Python制作一个简易的计时器
  4. 时隔一个多月发布原生一体化云安全产品,ZStack的发展还可以更快
  5. 盛京剑客系列22:一个成功的职业操盘手每天应做的三件事
  6. EAUML日拱一卒-活动图::OMG UML2.5中文译文 16.12 Expansion Regisons
  7. VSCode 安装NPM
  8. 网络规划 华为模拟器ensp
  9. 英语题目作业(10)
  10. 拔毒化腐生肌药题库【1】