MySQL в предложении против многократного удаления с одним коммитом - PullRequest
0 голосов
/ 17 мая 2011

У меня есть около 100K записей, которые я должен выполнить для следующего запроса:

delete from users where name in #{String}

, где строка может быть 100K строк этой формы: Джо, Кейт и т. Д.

Дляпроизводительность лучше выполнить вышеприведенный оператор или удалить одну запись в цикле с одной session.commit(); в конце?

EDITED

Может быть только одна записьдля каждого значения

Ответы [ 2 ]

2 голосов
/ 17 мая 2011

Если вы можете создать пакеты запросов для запуска, то, скорее всего, разбиение на пакеты будет наиболее быстрым:

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)
0 голосов
/ 17 мая 2011

Было бы лучше не использовать такие заявления!Оптимизатор запросов будет иметь полевой день для анализа такого запроса.Я предлагаю использовать некоторую временную таблицу для объединения или какое-либо другое предложение WHERE, которое имеет общие для удаления записи?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...