位置: 编程技术 - 正文

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函数用法)

  • 商业保险进项税额转出影响成本吗
  • 税前扣除项目主要内容?
  • 股权转让如何缴纳增值税
  • 营业成本包括哪些费用
  • 小规模纳税人在选择供应商时,主要考虑购进货物
  • 以固定资产投资的会计处理
  • 哪些项目需要交环保税
  • 个人转让房产两年内全额计税是什么意思
  • 货款不入公司账户属什么行为
  • 发票认证是干嘛
  • 技术服务税率是多少 现金
  • 将固定资产转给母公司属于债务重组吗
  • 银行属于个人吗
  • 进口关税完税价格
  • 印花税计提比例是多少
  • 填报退税
  • 备案类减免税又做费用了
  • 房租收入如何结转成本
  • 光伏安装工程公司有哪些
  • 怎样根据利润表做资产负债表
  • 金税盘上传参数测试连接失败
  • 转出未交增值税借方余额表示什么
  • 车辆购置税计入固定资产一起折旧吗
  • 小规模纳税人亏损要交税吗
  • 以前年度的库存商品出现负数今年如何入账
  • 启用或关闭windows功能怎么勾选
  • 收到财政厅的补助怎么办
  • 增值税附加怎么入账
  • 工业园租金大概是多少
  • 以非现金资产清偿全部债务
  • 动态壁纸怎么设置锁屏
  • winpe怎么安装到u盘
  • 建筑工程给排水的内容
  • PHP:Memcached::getVersion()的用法_Memcached类
  • 报销差旅费怎么算
  • 处置固定资产增值税怎么计算
  • laravel 使用redis
  • 销售汇总怎么做分录
  • 企业收到赠送商品怎么办
  • 钉钉的组织在线怎么设置
  • 委托开发和购买开发
  • 拨出专款年末结转
  • 注册资本增加了怎么做账
  • Uncaught DONException: Failed to execute ‘atob‘ on “window ‘: The string to be decoded is not carrec...
  • 帝国cms调用api接口
  • 小规模纳税人税率2023年是多少
  • 汇算清缴思路
  • 核定征收过了时间就不能申请了吧
  • 城建税如何计提税金
  • 长期股权投资权益法初始成本的确定
  • 已经确认收入
  • 事业单位工会经费账务处理
  • 企业会计准则解释第16号
  • 应收应付的意思
  • 收到分公司负责人的礼物
  • 工资的计算方法有几种
  • 支付信息表
  • win2003启动无法显示桌面
  • lsass exe
  • 操作系统运行慢怎么解决
  • 虚拟机安装苹果电脑
  • 电脑图片密码是什么意思
  • windows10x预览版
  • windows7hosts文件
  • win8功能
  • win10系统网络连接配置异常
  • Android的AsyncTask官方API谷歌翻译版
  • js实现日历可获得的信息
  • vue.js作用
  • 用一个简单的方法作文
  • angular基础
  • sockaddr_in和sockaddr
  • linux echo echo
  • linux shell脚本实例
  • js跨域是什么意思
  • 安卓端数据库
  • dom操作的方法有哪些
  • 临沭公交车多久一班
  • 财务局是什么
  • 浙江农村医保手机上怎么缴费
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设