如题。经过测试发现,远程 select 一万条(一万条仅仅为举例)记录时 ,需要很长时间语句才执行完毕,执行完成后再取这一万条记录里的各个值非常快,说明一万条数据已经下载到本地来了。如何在select 的时候不管有多少条都立即返回,当我在获取每一条记录的字段值时,再去服务器上取呢?我用的MFC C/S程序。

解决方案 »

  1.   


    --用分页显示  一次显示一部分
    select top 100 *  from table
      

  2.   


    --用分页显示  一次显示一部分
    select top 100 *  from table
      

  3.   

    慢在传输了
    每次取100条,显示第一个100条之后程序自动慢慢取。。c来做,就辛苦了,delphi是自动的了
      

  4.   

    在select语句的结尾加: option(fast [记录数])可以强制以最快速度返回指定的记录数.
      

  5.   

    不矛盾的。我现在在考虑还是优化我的SQL语句 和 设计逻辑吧从数据库本身方面考虑看来提升有限。
      

  6.   

    你怎么使用服务端游标的?
    服务端游标不是在sql中使用哦!
    使用服务端游标可以先异步执行不获取结果,所以可以很快执行,而且很快执行完.
    然后用只读,仅向前游标再异步读取数据,可以分批加载.
    配合异步只是减少数据加载量而已,也能提升整体的体验.
      

  7.   


    非常感谢,我是在网上搜的服务端游标使用,就是在SQL语句执行时加入adUseServer参数和一些其它步骤,总之刚好就是在SQL中使用的。能否再麻烦告诉我你说的这个服务端游标到底是怎么使用的?告诉我步骤我自己测试就行了,非常感谢。
      

  8.   

    不是在sql中用,而是在你的客户端程序里.
    adUseServer是ADO组件的一个参数.
    你试试ADO/ADO.NET
      

  9.   

    嘿嘿  我在C#中已经实现了,用datareader+多线程
      

  10.   

    能否具体说一下使用服务端游标的步骤,我就是在客户端程序里做的,用了adUseServer参数。
      

  11.   

    晕了,我用的是MFC,有异步处理的办法吗?
      

  12.   

    多线程神马的对我来说是小菜,关键就是不知道SQL SERVER里怎么异步。