十一、操作delete或者update语句,加个limit或者循环分批次删除

简介: 十一、操作delete或者update语句,加个limit或者循环分批次删除

1、降低写错SQL的代价


清空表数据可不是小事情,一个手抖全没了,删库跑路?如果加limit,删错也只是丢失部分数据,可以通过binlog日志快速恢复的。


2、SQL效率很可能更高


SQL中加了limit 1,如果第一条就命中目标return, 没有limit的话,还会继续执行扫描表。


3、避免长事务


delete执行时,如果age加了索引,MySQL会将所有相关的行加写锁和间隙锁,所有执行相关行会被锁住,如果删除数量大,会直接影响相关业务无法使用。


4、数据量大的话,容易把CPU打满


如果你删除数据量很大时,不加 limit限制一下记录数,容易把cpu打满,导致越删越慢。


5、锁表


一次性删除太多数据,可能造成锁表,会有lock wait timeout exceed的错误,所以建议分批操作。


目录
相关文章
|
Java 数据库连接 mybatis
mybatismybatisPlus Update操作返回值不是影响行数
mybatismybatisPlus Update操作返回值不是影响行数
606 0
|
5月前
|
SQL 数据库
`UPDATE FROM` 的语法以及常见的更新操作方式
`UPDATE FROM` 的语法以及常见的更新操作方式
956 2
|
6月前
|
SQL 存储 Java
MyBatis【付诸实践 02】 mapper文件未编译+statementType使用+返回结果字段顺序不一致+获取自增ID+一个update标签批量更新记录
MyBatis【付诸实践 02】 mapper文件未编译+statementType使用+返回结果字段顺序不一致+获取自增ID+一个update标签批量更新记录
70 0
|
关系型数据库 MySQL Java
MySQL 巨坑:update 更新慎用影响行数做判断!!!
MySQL 巨坑:update 更新慎用影响行数做判断!!!
1215 0
MySQL 巨坑:update 更新慎用影响行数做判断!!!
|
SQL 关系型数据库 MySQL
操作delete或者update语句,加个limit或者循环分批次删除
操作delete或者update语句,加个limit或者循环分批次删除
|
SQL 数据库管理
【SQL开发实战技巧】系列(九):一个update误把其他列数据更新成空了?Merge改写update!给你五种删除重复数据的写法!
本篇文章讲解的主要内容是:***你有没有经历过一个update把其他列数据清空了、使用merge更新合并记录、删除违反参照完整性的记录、给你五种删除重复数据的写法*** 【SQL开发实战技巧】这一系列博主当作复习旧知识来进行写作,毕竟SQL开发在数据分析场景非常重要且基础,面试也会经常问SQL开发和调优经验,相信当我写完这一系列文章,也能再有所收获,未来面对SQL面试也能游刃有余~。
【SQL开发实战技巧】系列(九):一个update误把其他列数据更新成空了?Merge改写update!给你五种删除重复数据的写法!
|
SQL 数据库
数据库sql语句(count(*)和count(字段))
数据库sql语句(count(*)和count(字段))
180 0
|
SQL 关系型数据库 MySQL
select _ from t_student where class between 200 and 300需要执行几次索引树的搜索操作,会扫描多少行
select _ from t_student where class between 200 and 300需要执行几次索引树的搜索操作,会扫描多少行
155 1