С сотнями тысяч пар вы не можете выполнить 1 (выполнить запрос как есть), потому что оператор SQL будет слишком длинным.
3 хорошо, если пары уже есть в таблице.Если нет, вам нужно будет сначала вставить их.Если они вам позже не понадобятся, вы можете запустить то же количество операторов DELETE вместо операторов INSERT.
Как насчет подготовленного оператора в цикле, возможно, пакетного (если Python поддерживает это)
- начать транзакцию
- подготовить оператор "DELETE FROM pond_pairs WHERE ((pond1 =?) AND (pond2 =?))"
- цикл над вашими данными (в Python)и запустите оператор с одной парой (или добавьте в пакет)
- commit
Откуда поступают пары?Если вы можете написать операторы SELECT для их идентификации, вы можете просто переместить это условие в предложение WHERE вашего удаления.
DELETE FROM pond_pairs WHERE (pond1, ponds) in (SELECT pond1, pond2 FROM ...... )