在SQLITE数据库中写记录要花费大量时间。如何提高插入操作的效率?

时间:2018-09-10 11:26:30

标签: c++ c database sqlite

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

有什么办法可以减少这段时间并提高插入操作的效率?

我将一笔交易中的1000条记录分组,然后执行它们。

sqlite3_exec(begin transaction);

sqlite3_exec(<1000> insertions);

sqlite3_exec(end transaction);

这花费了大量时间。

如何提高插入效率?

1 个答案:

答案 0 :(得分:2)

假设所有语句仅在同一表中INSERT处,则可以通过将语句创建为准备好的语句,然后将其重新用于每一行(将其绑定到新语句)来提高性能。数据)。对准备好的语句的解释是here;基本思想是,您不用sqlite3_exec,而是用sqlite3_prepare_v2(使用占位符代替数据)来准备一条语句,然后将每一行将其绑定到数据,执行并重置它。这样,SQLite不必每次都重新解析/重新编译该语句,因为只有值会更改。