Mysql
MySQL - 使用 IN 子句刪除需要更多時間
在 MySQL 5.6 中,我有大約 6000 萬行。我想根據 Id 刪除行。這裡 Id 是主鍵。
我今天有一個奇怪的行為。
delete from tbl where id=1;
它以毫秒為單位執行。
然後我做了這個。
CREATE TEMPORARY TABLE DELETE_ID (ID int); Insert into DELETE_ID select id from (subery1(subquery2(subquery3)));
DELETE_ID 有大約 150 個 ID。
Delete from tbl where id in (select id from DELETE_ID);
它花費了 30 多分鐘,但刪除了一行。
沒有鎖或死鎖。
在 innodb_trx 中,有時狀態
fetching rows
為unlocking rows
.誰能幫我理解為什麼會這樣?
WHERE .. IN
在大多數情況下很慢。使用多表刪除:
DELETE tbl.* FROM tbl, DELETE_ID WHERE tbl.id = DELETE_ID.id
從 tbl 中刪除,其中 EXISTS (SELECT id FROM DELETE_ID WHERE tbl.id = DELETE_ID.id);