参考:
【精选】SQLite批量插入效率_sqlite 批量插入_PengX_Seek的博客-CSDN博客
(1)不使用事务时:
- clock_t t_start = clock();
- QSqlQuery query(db);
- QString sql("insert into test(col1,col2) values(1,2);");
- for (int i = 0; i < 1000; i++)
- {
- query.exec(sql);
- //qDebug() << query.lastError();
- }
- clock_t t_stop = clock();
- std::cout << "cost time " << (t_stop - t_start) << " ms" << std::endl;
cost time 22566 ms
每次使用SQL语句,都会打开和关闭数据库文件(共1000次)。
(2)使用事务时:
- clock_t t_start = clock();
-
- QSqlQuery begin(db);
- begin.exec("begin;");
- QSqlQuery query(db);
-
- QString sql("insert into test(col1,col2) values(1,2);");
- for (int i = 0; i < 1000; i++)
- {
- query.exec(sql);
- //qDebug() << query.lastError();
- }
- QSqlQuery commit(db);
- commit.exec("commit;");
- //commit.exec("end;");
- //使用end;效果一样
- clock_t t_stop = clock();
- std::cout << "cost time " << (t_stop - t_start) << " ms" << std::endl;
cost time 67 ms
只打开和关闭了一次数据库文件。