Если это то, что вам придется делать на регулярной основе, первым выбором должна быть попытка улучшить дизайн базы данных (поиск первичных ключей, попытка сделать условие "соединения" включенным в несколько столбцов насколько это возможно).
Если это невозможно, второй вариант заключается в определении «селективности» каждого из столбцов (т. Е. Сколько «различных» значений имеет каждый столбец, «имя» будет более избирательным, чем «страна адреса») «чем« мужчина / женщина »).
Общий тип заявления, который я бы предложил, был бы таким:
Delete from tableA
where exists (select * from tableB
where tableA.colx1 = tableB.colx1
and tableA.colx2 = tableB.colx2
etc. and tableA.colx10 = tableB.colx10).
Идея состоит в том, чтобы перечислить столбцы в порядке избирательности и построить индекс для столбцов colx1, colx2 и т. Д. В таблицеB. Точное количество столбцов в таблице B будет результатом некоторых испытаний и измерений. (Смещение времени для построения индекса для таблицы B с улучшенным временем оператора удаления.)
Если это всего лишь одноразовая операция, я бы выбрал один из медленных методов, описанных выше. Вероятно, не стоит слишком много думать об этом, когда вы можете просто начать выступление, прежде чем идти домой ...