- 系统: win10
- IDE: QT(Qt Quick)
优化前
循环往表中插入10000条数据
bool Sqlite::dbInsert(QSqlDatabase *_db)
{
QSqlQuery * _sql = new QSqlQuery(*_db);
QTime t;
t.start();
for(int i = 0; i < 10000; ++i)
{
_sql->prepare(QString("insert into '%1' values(?,?)").arg(strTableName));
_sql->bindValue(0,"s");
_sql->bindValue(1,i);
_sql->exec();
if(!_sql->execBatch())
{
cout<<_sql->lastError();
}
}
cout<<"插入用时:"<<t.elapsed();
return true;
}
消耗时间太长了,我的数据库还在固态硬盘里
优化后
在循环外加上 _db->transaction(); :表示开始一个事务; _db->commit(); :表示提交,将事务中的所有对数据库的操作写回数据库;
bool Sqlite::dbInsert(QSqlDatabase *_db)
{
QSqlQuery * _sql = new QSqlQuery(*_db);
QTime t;
t.start();
_db->transaction();
for(int i = 0; i < 10000; ++i)
{
_sql->prepare(QString("insert into '%1' values(?,?)").arg(strTableName));
_sql->bindValue(0,"s");
_sql->bindValue(1,i);
_sql->exec();
if(!_sql->execBatch())
{
cout<<_sql->lastError();
}
}
_db->commit();
cout<<"插入用时:"<<t.elapsed();
return true;
}
执行时间大大减少!!!
|