У меня довольно простая таблица с примерно миллионами строк.
id | my_col | other1 | other 2 | ...
В этой таблице содержится около 15 000 различных значений my_col, и у меня есть индекс для my_col.У меня есть набор из 7k значений my_col, которые мне нужно удалить из этой таблицы.
Что более эффективно делать в SQL (в настоящее время я работаю с MySQL, но в будущем могу портировать на MS SQL).
Это а) В моем коде Java-приложения пропустите все значения my_col и вызовите sql delete для каждого из них.
for (String my_colValue : listMyCol) {
[delete from my_table where my_col = my_colValue]
}
или b) Создайте один SQL [большой] оператор, содержащий все эти значения с использованием предложения "где в"?
delete from my_table where my_col in ('aaa', 'aab', 'aac', ...)
Я бы предположил, что это б), но я не уверен, если указать около 7k значений в этом "где в"предложение становится неэффективным.
Для чего бы это ни стоило, мой сервер приложений и сервер баз данных размещены в Amazon, но на разных уровнях.