在sqlite3 C ++中批量插入的更好方法

时间:2018-06-21 17:25:09

标签: c++ sqlite

我要执行大量插入语句。我可以使用所有insert语句创建一个sql字符串,然后像执行一次,

std::string sql_string = "";
int i;
for(i=0;i<1000; i++) {
   Transaction transaction = transactions[i];
   std::string tx_sql = CREATE_SQL_STRING(transaction, lastTxId); // "INSERT INTO (...) VALUES (...);"
   sql_string = sql_string+tx_sql;
   lastTxId++;
}
sqlite3_exec(db, sql_string.c_str(), callback, 0, &zErrMsg);

是否还有其他性能更好的方法使用sqlite3 c ++ API进行批量插入?

插入对安全性不是至关重要的。仅考虑性能。我应该使用准备好的陈述吗?

1 个答案:

答案 0 :(得分:1)

最重要的是:将所有插入插入单个事务中。

有关性能的更多详细信息,请参见官方文档:https://sqlite.org/speed.html(有点过时)

有关更多最新信息,我建议https://medium.com/@JasonWyatt/squeezing-performance-from-sqlite-insertions-971aff98eef2

对于准备好的语句:我不确定性能,但是始终使用它们是一个好习惯。