MySql 删除需要很长时间
MySql Delete Taking A Long Time
我有一个查询要根据主键删除一组 300 条记录。
table 大约有 250,000 条记录和四列(int PK、varchar、date、tinyint),因此它应该是一个非常易于管理的大小,但是,删除大约需要 2 分钟,没有其他查询 运行,根据它删除的行数和 table.
的大小,这似乎太过分了
sql 看起来像这样:
-- this takes less than 1 second
CREATE TEMPORARY TABLE IF NOT EXISTS temp AS (
SELECT id
FROM some_other_table
WHERE ...
LIMIT 300
);
-- id is the primary key
-- this takes upwards of 2 minutes
DELETE FROM queue WHERE id in(
select id from temp
);
table只有一个附加索引,没有外键关系。关于我可以做些什么来加快速度有什么想法吗?
Mysql 不能很好地优化 IN,改用 JOIN:
DELETE q.* FROM queue q INNER JOIN temp t ON q.id=t.id
我有一个查询要根据主键删除一组 300 条记录。
table 大约有 250,000 条记录和四列(int PK、varchar、date、tinyint),因此它应该是一个非常易于管理的大小,但是,删除大约需要 2 分钟,没有其他查询 运行,根据它删除的行数和 table.
的大小,这似乎太过分了sql 看起来像这样:
-- this takes less than 1 second
CREATE TEMPORARY TABLE IF NOT EXISTS temp AS (
SELECT id
FROM some_other_table
WHERE ...
LIMIT 300
);
-- id is the primary key
-- this takes upwards of 2 minutes
DELETE FROM queue WHERE id in(
select id from temp
);
table只有一个附加索引,没有外键关系。关于我可以做些什么来加快速度有什么想法吗?
Mysql 不能很好地优化 IN,改用 JOIN:
DELETE q.* FROM queue q INNER JOIN temp t ON q.id=t.id