现对一个有大量数据的表(SQL Server)进行操作,我对它写一条记录就需要进行一次更新,以刷新显示当前的所有数据,由于数据量很大,每Close,Open一次需要几秒中,有什么好方法可以使刷新一次的时间是毫秒级的吗?谢谢!

解决方案 »

  1.   

    没必要放回全部的数据,
    可以通过写一个sql筛选出需要的,或者利用DBE或者DBX数据空间中默认返回的包大小来控制比如 ClientDataset的PacketRecords,默认-1表示返回全部,设定为100 再看看
      

  2.   

    再有就是对连接数据源的QUERY.APPEND;
      

  3.   

    refresh好象也是先Close再Open的,速度也很慢,这样看来想得到全部的数据是比较困难了,我现在也在考虑是不是先取一部分数据,
    在桌面数据库BDE中对这种情况Refresh挺快的
      

  4.   

    方案一:
    不要使用和数据集关联的控件,使用普通的stringgrid,每增加一条或修改一条手工在stringgrid中添加或修改。这样虽然麻烦点,但是操作性好。同时如果你使用的是ADO则无法设置这个参数。
    方案二:
    还可以使用数据集控件的POST方法。先将数据写入DATASET,然后POST,这样也不用开关数据集,因为数据已经在数据集中了,可以保证速度。
    方案三:
    如果你是使用循环进行添加记录,则可以使用DATASET.DISABLECONTROL方法,添加完后,再POST,最后别忘了DATASET.ENABLECONTROL,这样也没有速度影响。
      

  5.   

    加入数据为什么要close呢?
    append进去不可以吗?
      

  6.   

    我是加入数据后需要重新刷新,重新刷新时Close,Open会很慢
    To:mandyfan(星空) 我没有使用DBGrid关联数据集,而是希望刷新数据集后得到数据显示在stringgrid中,现在的问题在于Close,Open时慢。方案一,方案三好象不行,方案二?
    简单的例子:
    我的程序接收设备的数据,然后存进数据库,刷新,显示,数据量大后,刷新时要花一定的时间,可能会影响程序与设备的通信。