我有大约100K记录,我必须为以下查询运行:
delete from users where name in #{String}
其中字符串可以是这种形式的100K字符串:Joe,Kate等。
为了提高性能,最好是运行上述语句还是最后在一个session.commit();
的循环中删除一条记录?
EDITED
每个值只能有一条记录
答案 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子句要删除的记录有共同点?