使用Client-Side Cursor并设置CacheSize = 1000。运行的时候还是把所连接的整个表下载到客户端的ado引擎,并不是下载1000条记录。对于第四章4.5节中“使用Client-Side Cursor 以及S e r v e r-Side Cursor这两种不同的C u r s o r来执行同一个A D O应用程序的结果。在执行这个测试时,也使用也不同大小的C a c h e S i z e,以便解释Client-Side Cursor、S e r v e r-Side Cursor以及C a c h e S i z e这三者相关的因素。”很不明白,我做了一个测试,但是结果都不是下表的数据差距这么明显,好象效率都一样的。CacheSize = 1               搜寻数据             启动数据表
S e r v e r-Side Cursor     5 8 . 3 8            4 3 . 0 1 4
Client-Side Cursor          5 . 5 6 8            3 . 8 3 6CacheSize = 100             搜寻数据             启动数据表
S e r v e r-Side Cursor     5 8 . 8 0            4 3 . 1 0 1
Client-Side Cursor          2 . 0 5 3            3 . 8 2 5CacheSize = 1000            搜寻数据             启动数据表
S e r v e r-Side Cursor     5 8 . 8 8            5 3 . 1 5 5
Client-Side Cursor          2 . 0 4 3            3 . 6 6 6回复的都有分,能够提供解决方案并解决的另给100分!

解决方案 »

  1.   

    我用来测试的表数据有20万条。close,open一次要40多秒了。
      

  2.   

    數據庫放在局域网的另外一台机的。用S e r v e r-Side Cursor 和Client-Side Cursor close,open一次都要40多秒了,并没有书中差别一个数量级那么大!
      

  3.   

    1. 除了设置CacheSize之外,
    是不是还有一个记录数的属性,,
    是record..什么来着忘了,
    如果为-1,表示一次取得所有数据,
    cachesize只是表示你的缓存一次能存的数据量吧,
    不知道说得对不对,一般来说cachesize都是为1的,表示修改1条后就马上提交。
    如果你设为cachesize=1000;只是表示有1000条数据被修改后,才提交数据库的。所以每次分批取数据与cachesize无关。
      

  4.   

    叫MAXRecords不能设为-1,要设为1000,就表示要下载1000笔数据