This question already has answers here:
Closed last year.
Improve INSERT-per-second performance of SQLite?
(10个答案)
在数据库表中插入大约1亿1000万条记录,使用C++接口API占用了大量的时间(>1小时)。
有什么方法可以降低这一时间并提高插入操作的效率?
我在一个事务中对1000条记录进行分组,然后执行它们。
这需要很长时间。
如何提高插入效率?
(10个答案)
在数据库表中插入大约1亿1000万条记录,使用C++接口API占用了大量的时间(>1小时)。
有什么方法可以降低这一时间并提高插入操作的效率?
我在一个事务中对1000条记录进行分组,然后执行它们。
sqlite3_exec(begin transaction);
sqlite3_exec(<1000> insertions);
sqlite3_exec(end transaction);
这需要很长时间。
如何提高插入效率?
最佳答案
假设所有语句都只是INSERT
s到同一个表中,那么您可能可以通过将语句创建为准备好的语句,然后对每一行重用它(每次都将其绑定到新数据)来提高性能。对准备好的语句的一些解释是here;基本思想是用sqlite3_exec
准备一个语句(用占位符代替数据),然后为每一行将它绑定到数据,执行它,并重置它。这样,SQLite就不必每次都重新分析/重新编译语句,因为只有值会更改。