• 3261阅读
  • 1回复

transaction()函数加入没有提高数据库运行速度的情况。。 [复制链接]

上一主题 下一主题
离线ccwccy
 
只看楼主 倒序阅读 楼主  发表于: 2011-09-29
QSqlDatabase::database().transaction();
int level = m_level-2;
   int beginCode =0;
   int roomID =1;
   query.exec(QString("select id from t_room where floorID = (select id from t_floor where projectid = %1)").arg(m_wb->currentProject()));
   if (query.next())
   {
    roomID = query.value(0).toInt();
   }
   sql = QString("select Name,Count from t_infaredDeviceMenu where ProtocolName = '%1' and Level ='%2'").arg(m_protocolName).arg(level+1);
   query.exec(sql);
   while(query.next())
   {
    int count = query.value(1).toInt();
    QString Name = query.value(0).toString();
    if (count==1)
    {
     addAutoDevices(beginCode,level+1,id,Name,moduleID,roomID);
     beginCode++;
    }
    else
    {
     for (int i=0;i<count;i++)
     {
      if (i!=0)
      {
       Name = Name +QString("_%1").arg(i+1);
      }
      addAutoDevices(beginCode,level+1,id,Name,moduleID,roomID);
      beginCode++;
     }
    }
   }
QSqlDatabase::database().commit();

上面这个是代码,其中红色部分是一个递归调用函数,这段代码总共插入了600多条数据,递归函数也执行了大概600次总共。。用时是1分28秒,
然后关键是,绿字部分不管我加不加,这段代码的执行时间都是1分28秒左右,好像是完全不起作用了,有没有高人能解答下小弟的疑问。。。
离线ccwccy
只看该作者 1楼 发表于: 2011-09-29
已解决。。结贴,结果是我在执行递归函数的时候添加了一个重置界面的函数,结果就重置了600遍。。我了个去
快速回复
限100 字节
 
上一个 下一个