关于c ++:在SQLITE数据库中编写记录需要花费大量时间。

Writing records in SQLITE database taking huge time. How to improve efficiency of insert operation?

本问题已经有最佳答案,请猛点这里访问。

在数据库表中插入大约1亿1000万条记录,使用C++接口API占用了大量的时间(>1小时)。

有没有办法减少这一时间,提高插入操作的效率?

我在一个事务中对1000条记录进行分组,然后执行它们。

sqlite3_exec(begin transaction);

sqlite3_exec(<1000> insertions);

sqlite3_exec(end transaction);

这需要花费大量时间。

如何提高插入效率?


假设您的所有语句都是同一个表中的INSERT,那么您可能能够通过将该语句创建为准备好的语句来提高性能,然后对每一行重用它(每次都将其绑定到新数据)。这里是对准备好的语句的一些解释;其基本思想是,不要使用sqlite3_exec,而是使用sqlite3_prepare_v2准备一个语句(使用占位符而不是数据),然后针对每一行将其绑定到数据,执行并重置它。这样,sqlite就不必每次都重新分析/重新编译语句,因为只有值会更改。