The*_*Guy 5 mysql innodb delete
在 MySQL 5.6 中,我有大约 6000 万行。我想根据 Id 删除行。这里的Id是主键。
我今天有一个奇怪的行为。
delete from tbl where id=1;
Run Code Online (Sandbox Code Playgroud)
它以毫秒为单位执行。
然后我就这样做了。
CREATE TEMPORARY TABLE DELETE_ID (ID int);
Insert into DELETE_ID select id from (subery1(subquery2(subquery3)));
Run Code Online (Sandbox Code Playgroud)
DELETE_ID 大约有 150 个 ID。
Delete from tbl where id in (select id from DELETE_ID);
Run Code Online (Sandbox Code Playgroud)
花费了 30 多分钟,但删除了一行。
没有锁或死锁。
在 innodb_trx 中,状态有时是fetching rows
有时unlocking rows
。
谁能帮助我理解为什么会发生这种情况?
WHERE .. IN
大多数情况下速度很慢。
使用多表删除:
DELETE tbl.*
FROM tbl, DELETE_ID
WHERE tbl.id = DELETE_ID.id
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3164 次 |
最近记录: |