Хорошо, я должен был попробовать дефрагментацию и HDD против SSD, прежде чем задавать вопрос о моем коде. В этих тестах используется Dapper (как предложено в ответе Роберта Харви), но это само по себе не меняет скорости.
150 МБ базы данных, 2 000 000 строк, ~ 136 МБ ОЗУ:
A 2018 4TB WD Blue HDD = 6m 31s
same HDD after defragmenting the database file = 2m 32s
an old SATA Corsair Force3 120GB SSD = 8s
4 500 000 строк, ~ 300 МБ ОЗУ:
HDD = 28min
HDD (defrag) = 13min
SSD = 28s (with both Dapper and my original code)
Каждому тесту предшествовала перезагрузка системы для предотвращения кэширования.
Так что, я думаю, довольно очевидный ответ:
Не используйте жесткие диски (по крайней мере, 4 ТБ WD Blue) для баз данных SQLite, и, если необходимо, по крайней мере, регулярно их дефрагментируйте.