Встал вопрос об оптимизации данного действия, потому как на обновление таблицы уходит минимум 2 минуты.
Ну это известный прикол что по-умолчанию SQlite делает транзакцию на каждый insert. Запустите транзакцию и закоммитьте её один раз и все строки вставятся за секунду максимум.
Вы начали выдумывать какие-то мегаспособы ускорения, не исследовав корень проблемы. А корень в том, что на транзакцию SQLite создаёт файл отката, и когда таки транзакций 40000, это будет столько же операций пересоздания файла. Это просто пздц какая тяжелая операция для файловой системы, и ни процессор ни многопоточность вообще не при чём. Могли бы догадаться сами, т.к. 40000 небольших записей это вообще не объём.
Решение гуглится за 20 секунд и написано в FAQ по SQLite:
www.sqlite.org/faq.html#q19