在SQLITE数据库中写入记录需要花费大量时间.如何提高刀片操作效率?

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

本文关键字:何提高 时间 效率 操作 数据库 SQLITE 记录      更新时间:2023-10-16

使用C++接口 API 在数据库中的表中插入大约 1.1 亿条记录需要花费大量时间(>1 小时(。

有没有办法缩短这个时间并提高刀片操作的效率?

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

sqlite3_exec(begin transaction);

sqlite3_exec(<1000> insertions);

sqlite3_exec(end transaction);

这需要花费大量时间。

如何提高插入效率?

假设所有语句都INSERT到同一个表中,则可以通过将语句创建为预准备语句,然后将其重用于每一行(每次都将其绑定到新数据(来提高性能。这里有一些准备好的陈述的解释;基本思想是,而不是做sqlite3_exec,你准备一个带有sqlite3_prepare_v2的语句(用占位符而不是数据(,然后为每一行将其绑定到数据,执行它,然后重置它。这样,SQLite 就不必每次都重新解析/重新编译语句,因为只有值会更改。