当数据只有400多条时还很快,现在才增加到4000,就变的很慢了,数据库为SQLSERVER2000

解决方案 »

  1.   

    有什么必要让4000条纪录都显示出来?调整你的数据源(看你用的什么方式了,BDE,ADO,DBX都能调)的PacketRecord 的大小。这样他一次只读出来一部分,用于显示,会块很多。
      

  2.   

    第3方控件的数据显示,运算比delphi自带的DBGrid运行起来确实要慢很多。有很多附加的运算。象你这中情况,你一次就不应该从数据库取那么多的数据,而且用户也看不了那么多。而且不要使用 DataSet.Append; 和排序命令。要么就用回DBGrid
      

  3.   

    排序等操作之前,你会打开数据集(.open)当然会很慢
    不过你可以加一些技巧:query1.sql.add('select * from table1 where 1=2');
    query1.open;
    这样打开数据集,就会非常快了,接着就进行其他操作吧
    (要不然,你把所有数据都显示出来,如果有几百万条记录,那岂不是要几个小时《估计的,呵呵》)
      

  4.   

    用了 where 1=2 条件,即一条记录都没有选出
      

  5.   

    排序前,现断开与dbgird 的连接
     ADOQuery1.DisableControls;
    排序后,连之
     ADOQuery1.EnableControls;