Так как кажется, что я не могу ускорить удаление, я думаю, что хорошим подходом может быть обработка файла такими партиями, как это:
While file1 not empty
file2 = head -n1000 file1
process file2
sed -i -e "1000d" file1
end
Недостатком этого является то, что если программа будет убита посередине (или если там будет какой-то плохой sql - вызывающий часть "процесса", которая умрет или заблокируется), будут строки, которые либо пропускаются, или обработано дважды.
(файл1 содержит строки кода SQL)