为什么使用SQLite事务插入数据速度这么慢

Scarlett26 2016-04-14 03:49:59
QTime *timer = new QTime;
timer->start();

QSqlQuery insertQuery;
QString query;
QVariantList one, two, three, four, five, six, seven, eight;
db.transaction(); //开始一个事务
insertQuery.prepare("insert into CheckRecord values(?,?,?,?,?,?,?,?)");
for (int i = 0; i < YValues.size(); i++)
{
for (int j = 0; j < YValues[i].size(); j++)
{
one << UUid::getUUid();
two << QString::number(j + 1);
three << TrackID;
four << checkTime[i];
five << stepList[i] * dx;
six << 0;
seven << YValues[i][j];
eight << DefectPercent[i][j];
}
}
insertQuery.addBindValue(one);
insertQuery.addBindValue(two);
insertQuery.addBindValue(three);
insertQuery.addBindValue(four);
insertQuery.addBindValue(five);
insertQuery.addBindValue(six);
insertQuery.addBindValue(seven);
insertQuery.addBindValue(eight);
insertQuery.execBatch();

db.commit(); //提交
qDebug() << timer->elapsed();


这样基本是插入100条数据就需要1秒,为什么我看别人的使用SQLite事务插入数据很快,而我的与别人相比就慢了不少,或者我要如何优化这个
...全文
707 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Scarlett26 2016-04-20
  • 打赏
  • 举报
回复
目前的解决方法:使用INSERT INTO TABLE(col1, col2) SELECT val11, val12 UNION ALL SELECT val21, val22 ;插入数据,这样插入速度会快很多
Scarlett26 2016-04-19
  • 打赏
  • 举报
回复
引用 1 楼 gaobobo138968 的回复:
我电脑只要193 ms,i5,4g内存 不用transaction()的话要18s
我的也是i5,4g内存,你是测试了我的代码吗,你插入的是100条?
Scarlett26 2016-04-19
  • 打赏
  • 举报
回复
引用 3 楼 gaobobo138968 的回复:
[quote=引用 2 楼 cml26 的回复:] [quote=引用 1 楼 gaobobo138968 的回复:] 我电脑只要193 ms,i5,4g内存 不用transaction()的话要18s
我的也是i5,4g内存,你是测试了我的代码吗,你插入的是100条?[/quote] 是的,不过插入的是常量。[/quote] 我调用了100次里面会用到的函数,用了差不多1ms,感觉这个的差别应该不是很大吧
qcgao 2016-04-19
  • 打赏
  • 举报
回复
引用 2 楼 cml26 的回复:
[quote=引用 1 楼 gaobobo138968 的回复:] 我电脑只要193 ms,i5,4g内存 不用transaction()的话要18s
我的也是i5,4g内存,你是测试了我的代码吗,你插入的是100条?[/quote] 是的,不过插入的是常量。
qcgao 2016-04-18
  • 打赏
  • 举报
回复
我电脑只要193 ms,i5,4g内存 不用transaction()的话要18s

16,212

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧