在TQuery中用单个SQL语句删除或修改一个表,当有可能数据量巨大时,是不是应该分批处理,请各位大侠谈谈经验:针对sql server 和mysql分别说明!

解决方案 »

  1.   

    不知道,反正ltBatchOptimistic我實從來不用的。
    我一般都是直接寫,然後開起事務!
      

  2.   

    分批处理危险更大,最好是用个事务,发生错误就回滚
    -------------
    我的意思是就一条语句,应该不用显示开启事务!我看了前人的代码,对于sqlserver是这样分批的,不知道有没有道理:(这样的备份有用吗?)
      try
        execsql('set rowcount ' + inttostr(Rowcount));    repeat
          execsql(' declare @dbname varchar(30)'+#13#10+
            'select @dbname=db_name()'+#13#10+
            'dump transaction @dbname with no_log');
          execsql(sqlStr);--------------------------这句是本来要执行的语句
    //      sleep(1000);
        until
          DMSys.QryBackTemp.RowsAffected < Rowcount;
      finally
        execsql('set rowcount 0');