SQLite性能优化
场景描述
有10000条数据需要插入数据库,原来未优化的代码为直接循环执行INSERT语句。
void test0()
{
sqlite3 *db = NULL;
sqlite3_open("test0.db", &db);
auto begin = std::chrono::steady_clock::now();
sqlite3_exec(db, "CREATE TABLE Test(id INTEGER,msg TEXT);", 0, 0, 0);
const int m = 10000;
for (int i = 0; i < m; i++)
{
sqlite3_exec(db, "INSERT INTO Test(id,msg) VALUES(123,'hello');", 0, 0, 0);
}
auto end = std::chrono::steady_clock::now();
auto elapsed = std::chrono::duration_cast<std::chrono::milliseconds>(end - begin).count();
printf("test0执行时间: %ld ms\n", elapsed);
sqlite3_close(db);
}
大约 3 分钟