我用Delphi6+SqlServer2000,记录仅有4000多条查询时就明显有迟钝感,该怎么解决?
谢谢!!

解决方案 »

  1.   

    这是绝对不可能地,把你的sql语句拿出来looklook
      

  2.   

    AdoQuery1.Close;
      AdoQuery1.Sql.Clear;
      AdoQuery1.Sql.add('select * ......');
      ExecSql;
      

  3.   

    少用lookup.尽量不要在TDBDataSet组件的事件中添加代码。
      

  4.   

    'select * ......'
    一般查找数据时,如果没有必要,不要用'*',用相关字段名代替。否则会慢很多的。
      

  5.   

    AdoQuery1.Close;
      AdoQuery1.Sql.Clear;
      AdoQuery1.Sql.add('select * ......');
      ExecSql;你为何要写成这样的。
      AdoQuery1.Close;
      AdoQuery1.Sql.Clear;
      AdoQuery1.Sql.add('select * ......');
      Open;
    还有就是你的select * from .....如果用的字段不多的话你可以要那一个写上那一个就可以了。
    还有你数据库的日志是如何处理的。它的空间是如何分配的。一般来说给的大点。而后再定时清掉就可以了。
      

  6.   

    sql : select top 100 from .....
    这样会好些,用不到的数据一下显示这么多干吗?
      

  7.   

    如果可以的话,不要把SQL的条件写得太宽松了
      

  8.   

    首先对要查询的表建索引
    其次注意SQL语句的优惠,特别是where条件的编写
    注意,“不等于”运算不会利用索引的,要特别注意
    希望对楼主有帮助
      

  9.   

    有遇到同样的问题,感觉用DelPhi+oracle 查询数据特慢,不上万条数据竟然可以等上5分中,老是让可户“耐心”等待,:),惭愧,回去加加索引看看。
      

  10.   

    把你的SQL语句拿出来看看,这样看不出结果的,拿出来或许可以帮你优化。
    查询速度与SQL语句有很大关系。
      

  11.   

    在sql语句固定的情况下,在网络速度固定的情况下,在数据库服务器不繁忙的情况下,在数据表记录数固定的情况下,查询速度仅与索引建立的方式有关
      

  12.   

    绝对不可能有如此情况,我用D3+Sql server 6.5用的是BDE5.01,
    在30000条纪录的数据库(20余个表,有10多个Memo,BLOB),不管有没有索引,也不管有多少个INNER JOIN都是速度飞快!在索引的情况下,查询都是一瞬间的事!
      

  13.   

    如果ADO是返回所有记录,建议在ADO连接组件中将cursorlocation改成server side cursor型,那样会快很多
      

  14.   

    PS:如果一定要用client side cursor,将AODQUERY的cachesize改成500看看
      

  15.   

    遇到过类似的情况:我用PB+sybase和d5+sybase做开发,d5通过BDE连接,同样的语句在PB下查询的飞快,在D5下者费时良久,但后来我发现可能是我的电脑(笔记本)的问题。 因为在台式机上运行的也很快,我的数据库中有上百张表,有的表中有数十万比数据。
      

  16.   

    据我所知,查询速度与下列因素有关:
    1.硬件性能:包括服务器的和客户端的,服务器性能尤其重要
    2.网络性能:比如带宽,2M的带宽和32K的肯定有很大差别
    3.连接数:连接数太多会导致数据库繁忙,查询需要排队等候
    4.数据库设计:表结构、表数据量大小、索引等
    5.查询语句:是否关联太多,关联了几个大表?是否使用了已有的索引?
    另外看看是否一次性下载了全部的查询结果。一般查询时只返回靠前的数据而不是全部,当执行query.next到缓存中数据不够时才下载下一批;如果程序中有query.reccount语句,就会下载全部数据,所以查询变得很慢。建议楼主从这几个方面查找一下原因
      

  17.   

    把cursorlocation改成client side cursor
    把cache size 改成500左右
    把cursor type改成static
    速度应该可以快点,能在表中加个索引就更好了。
      

  18.   

    AdoQuery1.Close;
      AdoQuery1.Sql.Clear;
      AdoQuery1.Sql.add('select * ......');
      ExecSql;
    ExecSql;有问题
    用open比较好:
      

  19.   

    ExecSql---> OPen;
    索引建立