同要样的SQL语句:Select 字段1,字段2... FROM 表名
在SQL Server查询分析器中显示15万左右条记录的表只用27秒,但是我在三层结构中却要差不多2分钟的时间,这是为什么啊?
还有要怎样操作才能同时在DBGRID上显示数据另一边又同时在打开数据库呢?就像在SQL Server里的企业管理器一样,它是一边显示数据一边打开的,但我在三层结构中是等到查询完了才打开的。

解决方案 »

  1.   

    用线程。
    查询应该不要太多时间,关键是传送和显示吧?你可以接收一部分并添加到DBGRID后刷新一下窗体。
      

  2.   

    与三层或二层无关,关键在于你的设计上面
    如果你在查询分析器中用27秒,那么三层中打开这个SQL正常不会超过35秒
      

  3.   

    我是这样设计的,服务端上一个ADOQuery和一个DataSetProvider;然后有一个函数:
    OpenDB;
    begin
        ADOQuery.Close ;
        ADOQuery.SQL.Clear ;
        ADOQuery.SQL.Add('SELECT A.xh,A.zwxm,A.ywx,A.ywm,B.xbmc,C.gjzwmc,A.sfzhm,A.jg,');
        ADOQuery.SQL.Add('A.csly,A.nl,A.ttmc,A.lxdz,A.dwmc,A.xfzje,A.rzcs');
        ADOQuery.SQL.Add('FROM KRLSJL AS A,xb AS B,gj AS C Where A.xb=B.xb and A.gjdm=C.gjdm Order By A.xh');
        ADOQuery.Open;
    end;在客户端用SocketConnection连接,一个DataSource和一个ClientDataSet和一个DBGrid.
    然后通过以下代码调用显示数据:
    SocketConnection.AppServer.OpenDB;
    ClientDataSet.Active := true;各位看看我以上设计有什么问题呢?
      

  4.   

    用分批下载数据,可设置CLIENTDATASET的一个属性