老师您好, 关于批量删除的问题
来源:6-15 【实战】 外关联查询

你笑就好
2020-07-22
您的课程我看完了, 后期做项目的时候想到一个关于join优化的问题
您说过语句尽量用join语句, 可以用到索引
第一种:
删除若干条数据, 是直接delete from A表 where url=****
, url是有多条数据的, 并且url这个字段上面有索引
第二种:
通过delete join
语句
DELETE a FROM
A表 a
LEFT JOIN
(SELECT id FROM A表 WHERE url = "5f05737614195aa594fdbb2c") b
ON
a.id=b.id
WHERE b.id IS NOT NULL
这两种EXPLAIN都用到索引了, 但是第二种, 过程查询了两次表
- 第一种方法是数据库一条一条删除么?
- 第二种方法比第一条要快么? 一次性提交事务我觉得比多次提交事务要快, 所以想听听老师的看法
- 如果把
A表
抽出一个公共表达式(CTE), 是否第二种方法比第一种方法快
忘了说了, Mysql的版本是8.0.15
老师辛苦
写回答
1回答
-
如果能使用单表就没有必要非要使用join方式了。第一种方法也会删除所有满足条件的数据。以你的例子看第二条并不如第一条好。
112020-08-16
相似问题