update mytable
set myvar=1
这种用SQL完成更新的方法比
while not mytable.eof do
  myvar.asinteger:=1;
快起码几十倍
我的4000条的ACCESS库,我本来在想,是不是遍历就是这么慢
所以,我在while语句中用空循环,不赋值,速度就和SQL差不多。说明遍历操作不算费时。
但是只要加一条myvar.asinteger:=1。
速度就成蜗牛了,大概要一两分钟才能遍历完。而SQL不到五秒钟。
可这已经是最简单的语句了啊?还有更简单的方法吗?
这和DISCONTROLS无关。我处理了的。
请大家指教。

解决方案 »

  1.   

    老兄,呵呵,如果是用SQL能解决我就不来问你了。
    我就是想问一下遍历赋值有什么技巧没有?
      

  2.   

    感兴趣你可以把数据库换成MSSQL,然后用它的性能分析起来查看他的动作。
    你会发现,你对数据库的操作最终都变成了SQL,只不过繁琐多了。
      

  3.   

    update set 
    不是很好吗
      

  4.   

    我上面只是举例,真实的要复杂得多。
    比如我要把'2004-02-12'这样的字符变量转化到一个日期型变量中去。
    ACCESS中没有相应的SQL的函数进行转化。我只能用myvar.asstring的方法来完成。
      

  5.   

    是啊,ACCESS里缺少了很多对SQL语句的支持,换MSSQL
    如果语句操作,肯定会慢的,没其他办法
      

  6.   

    如果是ADO,利用批次更新的模方应该快一点,
    把 mytable.LockType=ltBatchOptimistic然后做一次总提交,这样可以减少与数据库交往的次数
      

  7.   

    同意
       XXSingle(水连天【五行忌水,所以没有女人】) ( ) 信誉:100 说的,用缓存更新模式
      

  8.   

    还有如果有数据感知控件的话最好先disable
      

  9.   

    update table set date1=#2001-11-9# where id=123
      

  10.   

    SQL语句之所以快,是因为它是内部操作,而且是批处理的流水线操作,这个过程中,数据库被锁定进行独占的操作,性能上不受外界的影响。而你使用单独的DataSet操作的办法,每一条语句都要被编译成相关的数据库SQL语句,同时还有重新申请数据库资源,重新锁定这些都需要时间。这样想想,谁更快?
      

  11.   

    就算用缓存更新模式可能还是没有你的sql快哦。
    缓存更新模式就是全部更新操作后,批量进行递交。
      

  12.   

    缓存更新模式相当于:
    update t set ... where id=1
    update t set ... where id=2
    update t set ... where id=3
    ....肯定会比通常的Post快,但不会比一次更新多条语句的SQL更快。
      

  13.   

    有了update,为何还要想其他的呢?比如我要把'2004-02-12'这样的字符变量转化到一个日期型变量中去。
    ACCESS中没有相应的SQL的函数进行转化。
    绝对是可以转换的,不用SQL函数也是可以的啊?
      

  14.   

    缓存更新模式是设置什么属性?
    关键字是什么?谢谢
    =========================
    把你控件的属性:LockType=ltBatchOptimistic即可,
    总提交时用updateCatch()方法
      

  15.   

    用Update,朋友.你采用标准的SQL语局,不要用扩展的SQL,就可以解决问题