mysql in子句与多次删除一次提交

时间:2011-05-17 13:09:57

标签: mysql sql database

我有大约100K记录,我必须为以下查询运行:

delete from users where name in #{String}

其中字符串可以是这种形式的100K字符串:Joe,Kate等。

为了提高性能,最好是运行上述语句还是最后在一个session.commit();的循环中删除一条记录?

EDITED

每个值只能有一条记录

2 个答案:

答案 0 :(得分:2)

如果您可以创建批量查询来运行,那么将其分解为批次很可能是最快的:

delete from users where name in ('name1','name2','name3',.....'nameX');

delete from users where name in ('nameX+1','nameX+2','nameX+3',.....'nameX+X');

等。

如果你已经在表格中有名字,你可以这样做:

delete from users where name in (select name from table_with_names_to_be_deleted)

答案 1 :(得分:0)

最好不要使用这样的陈述! 查询优化器将有一个字段日解析这样的查询。我建议使用一些临时表来加入,或者一些其他WHERE子句要删除的记录有共同点?