mysql 数据库写入速度慢

eskimoer 2013-08-23 06:11:30
在qt下访问数据库,要遍历表中所有记录,针对每一天记录得出一个值,然后再写到该条记录的一个属性下。我就是读一条记录然后写一条的,总共10000条数据,怎么要处理二三十分钟,真的好慢,有没有快的方法,核心代码如下:
void QtConnectMysql::UseTableModify(QSqlDatabase db,QString table,FindKey &FindWords,LPCSTR upath1,LPCSTR spath2)
{
QTextCodec *code = QTextCodec::codecForName("utf8");
QString Qstr = " ";
QString upath = upath1;
QSqlTableModel qTable(0,db);
qTable.setTable(table);
qTable.setFilter("topic_id>0");
qTable.select();
int num = qTable.rowCount();
for(int i=0;i<num;i++)
{
QSqlRecord record = qTable.record(i);
//QFile sfile(upath1);
QFile sfile(upath);
if(!sfile.open(QIODevice::WriteOnly |QIODevice::Text))
{
qDebug()<<"Open file failed\n";
return ;
}
QTextStream sout(&sfile);
sout.setCodec(code);
Qstr = record.value("text").toString();
sout<<Qstr<<endl;
FindWords.SingleSeparateWords(upath1,spath2);
map<string,int> MapStr;
int nResult;
FindWords.ClearWords(spath2,MapStr);
//this is the first method to get the result
/*nResult = FindWords.SingleResult1(MapStr);*/

//this is the second method to get the result
nResult = FindWords.SingleResult2(MapStr);

record.setValue("kind",nResult);
qTable.setRecord(i,record);
}
if(qTable.submitAll())
{
std::cout<<"修改成功"<<endl;
//return true;
}
else
{
std::cout<<"修改不成功"<<endl;
//return false;
}
}
...全文
270 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
eskimoer 2013-08-26
  • 打赏
  • 举报
回复
引用 2 楼 zhuhl2011 的回复:
你这边是一起提交的,能不能弄成100件或者每一件提交一次呢 试试能不能提高,大批量提交的话性能不是很好的。
我是读一条写一条的
zhuhl2011 2013-08-23
  • 打赏
  • 举报
回复
你这边是一起提交的,能不能弄成100件或者每一件提交一次呢 试试能不能提高,大批量提交的话性能不是很好的。
Wentasy 2013-08-23
  • 打赏
  • 举报
回复
额,这里是Oracle。

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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