位置: 编程技术 - 正文

mysql优化系列 DELETE子查询改写优化(mysql优化技巧实战)

编辑:rootadmin

推荐整理分享mysql优化系列 DELETE子查询改写优化(mysql优化技巧实战),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:mysql优化语句,mysql优化总结,mysql常用优化方案,mysql优化总结,mysql常用优化方案,mysql 优化口诀,mysql 优化口诀,mysql优化十大技巧,内容如对您有帮助,希望把文章链接给更多的朋友!

1、问题描述

朋友遇到一个怪事,一个用子查询的DELETE,执行效率非常低。把DELETE改成SELECT后执行起来却很快,百思不得其解。

下面就是这个用了子查询的DELETE了:

几个表的DDL是这样的:

上面这个SQL的执行耗时是:.秒Query OK, 5 rows affected (. sec)如果我们把DELETE改写成SELECT的话,执行耗时仅是:0秒,来对比看下执行计划:

mysql优化系列 DELETE子查询改写优化(mysql优化技巧实战)

可以看到,trade_info 表从的全表扫描(type=ALL)变成了基于主键的等值查询(type=eq_ref),计划扫描数据量也从万变成了1条,而且还可以避免回表,这2个SQL对比代价相差巨大。

2、优化思路

既然这个SQL把DELETE改成SELECT后执行效率就可以获得很大提升,除此外没特别区别,可能是查询优化器方面有些不足,导致无法直接优化,就得另想办法了。我们的思路是把基于子查询的DELETE简化改写成多表JOIN后DELETE(一般来说,子查询效率比较低的话,可以考虑改写成JOIN),多表DELETE的语法课参考: t1 FROM t1 LEFT JOIN t2 ON t1.id=t2.id WHERE t2.id IS NULL;

参照上面的形式,改写之后的SQL变成了下面这样:

可以看到新的SQL执行效率相对就高很多了,不需要再扫描万条记录,执行耗时只需:0.秒。

Query OK, 5 rows affected (0. sec)

3、其他建议

虽然MySQL 5.6及以上的版本对子查询做了优化,但从本案例的结果来看,在一些情况下还是不如意。因此,如果发现有些子查询SQL效率比较差的话,可以尝试改写成JOIN形式,看看是否有所提升。此外,也要勇于怀疑查询优化器个别情况下存在不足,想办法绕过这些坑。

MySQL中的常用函数 在MySQL中,函数不仅可以出现在select语句及其子句中,而且还可以出现在update、delete语句中。常用的函数有:1.字符串函数;主要用于处理字符串。2.数

MySQL优化案例系列-mysql分页优化 通常,我们会采用ORDERBYLIMITstart,offset的方式来进行分页查询。例如下面这个SQL:SELECT*FROM`t1`WHEREftype=1ORDERBYidDESCLIMIT,;或者像下面这个不带任何条件的

Advanced Pagination for MySQL(mysql高级分页) 在叶子的文章里谈到了使用innerjoin从而减少了对page的扫描也就是减少了所谓的回表例如:SELECT*FROM`t1`INNERJOIN(SELECTidFROM`t1`ORDERBYidDESCLIMIT,)t2USING(id)

标签: mysql优化技巧实战

本文链接地址:https://www.jiuchutong.com/biancheng/348275.html 转载请保留说明!

上一篇:Mysql彻底解决中文乱码问题的方案(Illegal mix of collations for operation)(mysql 1449解决)

下一篇:MySQL中的常用函数(mysql函数用法)

  • 离岸价的含义
  • 金税四期怎么查账
  • 出租房怎么算平方多少
  • 纳税人未缴少缴税款
  • 机票附加的保险有必要买吗
  • 礼品费如何报销
  • 自然人税收系统生产经营怎么申报
  • 预提费用账户期末
  • 车辆购置税计税依据包括消费税吗
  • 贸易型出口退税流程
  • 印花税购销合同计税金额怎么算
  • 奖金做预发年底结算缴税怎么做?
  • 已经计提的坏账准备可以转回吗
  • 预缴土地增值税需要计提吗
  • 企业代开租金专票开什么项目好?
  • 市政配套费交给哪个部门
  • 会务费抵扣限额
  • 关于设备安装调试的说法
  • 上个月没有报个税这个月一起报
  • 固定资产折旧结束后怎样做账
  • 无形资产软件摊销年限是多少
  • 加计扣除两种情况
  • 利润分配需要缴纳企业所得税吗
  • 金融机构在境外
  • 出售废品收入
  • 调整以前年度企业所得税会计分录
  • 联想g40开机屏幕一直闪
  • 印花税是按开票金额还是收入
  • 招商银行直播在哪个平台
  • 企业所得税清算报备是什么意思
  • win11系统怎么删除账户
  • PHP:pg_fetch_all_columns()的用法_PostgreSQL函数
  • 未分配收益余额在哪方
  • 基于php实现简单函数
  • 商品流通企业会计分录
  • 达特穆尔动物园
  • php lcg_value与mt_rand生成0~1随机小数的效果对比分析
  • point network
  • 销售退货和销售折让的区别
  • 复式记账法会计名词解释
  • 收到银行的贷款怎么入账
  • 商会年会活动策划方案模板
  • 财政零余额账户存款
  • 资产负债表中应交税费为负数是什么意思
  • 资产负债表里长期股权投资是什么意思
  • 税务清算后还需要报税吗
  • 劳务费合同模版
  • 数据库管理中负责数据模式定义的数据库语言是
  • 广告制作费属于广告服务吗
  • asp 数据库
  • mysql命令行删除库中的所有表
  • 无形资产的成本包括增值税吗
  • 调账和调帐区别
  • 车船使用税和印花税谁交
  • 赠送客户的商品需要交税吗
  • 公转私怎么操作
  • 营业外支出如何做账
  • 小规模公司开票税率是多少
  • 勾选发票必须当月认证吗
  • 申报表应纳税额和财务账金额不一致可以不改申报表吗
  • 仓库周转率是什么意思
  • 健全的财务会计制度承诺函
  • 三种实现方法实现的特点
  • xp系统自带浏览器打不开网页
  • centos和rhel
  • linux系统要求配置
  • XP下HTTP的403.9错误-禁止访问:连接的用户过多 重启iis可以解决
  • win10系统如何设置不休眠
  • win1021h2正式版
  • js 操作excel
  • 获取已安装应用列表的权限在哪里设置
  • 可输入文字查找的软件
  • js foreach倒序
  • 我置顶你也只顶你
  • 上海税务发票自动抵扣
  • 怎么在电脑上下载浙政钉
  • 什么是居民企业和非居民企业
  • 浙江省国税局地址
  • 绍兴柯桥有哪些村
  • 小规模纳税人的增值税怎么计算
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设