我有一个 Sqlite3 数据库,其中包含一个表和一个由两个整数组成的主键,我正在尝试向其中插入大量数据(即大约 1GB 左右)
我遇到的问题是,创建主键还隐式创建了一个索引,在我的情况下,在几次提交后,它会使插入陷入困境(那是因为数据库文件在 NFS 上.. sigh)。
所以,我想以某种方式暂时禁用该索引。到目前为止,我最好的计划是删除主键的自动索引,但是 SQLite 似乎不喜欢它,如果我尝试这样做会引发错误。
我的第二个最佳计划是应用程序在网络驱动器上制作数据库的透明副本,进行修改然后将其合并回来。请注意,与大多数 SQlite/NFS 问题相反,我不需要访问并发。
做这样的事情的正确方法是什么?
更新:
我忘了指定我已经在使用的标志:
PRAGMA synchronous = OFF
PRAGMA journal_mode = OFF
PRAGMA locking_mode = EXCLUSIVE
PRAGMA temp_store = MEMORY
更新2: 我实际上是分批插入项目,但是下一批的提交速度比前一批慢(我假设这与索引的大小有关)。我尝试批量处理 10k 到 50k 元组,每个元组是两个整数和一个浮点数。