系统采用C/S结构,数据库采用informix,client端用ADO对数据库进行连接操作。但是,现在带宽有限,而传输的数据量比较大,(4000条数据,进行一次普通的查询[select * from tbName]要花费2分钟)。我应该怎样优化ADO,提高效率?请大家帮忙。

解决方案 »

  1.   

    使用 ADO 的游标为 服务器 端,应该有一个 CursorType 或者是别的之类的属性。用动态游标。
      

  2.   

    才4000条数据,进行一次普通的查询[select * from tbName]要花费2分钟,如果说这种速度的话,再怎么优化也不见得有什么效果。楼主的带宽也太少了吧。
      

  3.   

    将adoquery的cashsize设置为100(100是最好的),还有尽量分次传输数据(三层可以实现,两层可以用代码控制).不过调节cashsize就能使你的运行速度快上数十倍了.
      

  4.   

    1、将CursorLocation 设置为 adUseClient
    2、使用Conn.Execute执行SQL语句,返回Recordset,不要使用Recordset的Open方法。
    3、做个进度条显示数据读取进度。 :)
    4、更换其它数据库,比如Sql-server
    5、现在什么年代了? 都ADSL了,还存在带宽问题?
      

  5.   

    其实我觉得带宽不是很大的问题。因为纯文本的拷贝,也有50K/S左右。所以我想找找怎样提高ADO的效率
      

  6.   

    优化Sql语句select * from tbName where ....
    使用存储过程也可以有效降低网络流量
      

  7.   

    我用sql数据库,select语句在几十万条记录中提取数据都是眨眼工夫。要么你的数据库不好,要么网络传输速度太慢。
      

  8.   

    to: chenyuandxm(一剑平江湖) 
    你只的是在服务器端的操作吧。
    我觉得几十万条数据是不可能在眨眼间全部传输到远程的客户机上,否则就牛了。
    我这里网络是一个因素,但是我觉得没优化使用ADO也是一个因素。
    网络因素已经无法改变,所以我想在ADO的使用上下功夫。
    请兄弟们赐教。
      

  9.   

    没事你为什么select *  出来啊,把你有用的给Select出来不就省好多啊
      

  10.   

    我用select * 只是为了测试问题。
    我想知道ADO的使用上提高效率需要的注意点。
      

  11.   

    基本上不是ADO的问题,可能是数据库规划不好,比如没做索引
      

  12.   

    其实ADO的优化非常有限,按MS的说法,一是Cachesize设大一点,二是将LockType设为Readonly;
    绝对不要用服务器游标。
    你可以用一下针对informix的客户端引擎。