我access数据库中有了10条记录,我用了sql语句进行模糊查询,我在edit1的onchange属性写了一下代码:if ((trim(edit1.Text)<>'') and (length(edit1.Text)>1)) then
begin
  adoquery1.SQL.Clear;
adoquery1.sql.add('select cn from c_Dict where cn like'+''''+trim(edit1.Text+'%''');
adoquery1.Open;
adoquery1.First;
listbox1.Clear;
edit1.SelText;
      while adoquery1.Eof =False do
      begin
        listbox1.Items.Add(diskey(adoquery1.FieldByName('cn').AsString,1000));
        adoquery1.Next;
      end;
用了一下代码后,在edit上输入字符全(或字符)的时候,它的显示速度太慢了,
如何提高显示速度?有什么别的方法?

解决方案 »

  1.   

    这样不行,而且跟Delphi没有关系,无论你使用什么开发语言,结果都是一样的。
    数据库本身的设计问题。估计连索引都没有用上,你字段cn建立索引了吗?
    最好建立成聚集索引,能够提高你的速度。
    如果你想快速得到数据,那么有一种方法,你试试filter的方法。不过10万条感觉
    速度也不是很快,而且占用资源很大,他需要把所有的数据都放入内存后才filter的。
      

  2.   

    这和DELPHI没有关系吧!
    如果用主键比索引更快一些!
      

  3.   

    数据库的设计问题,要建立相应的索引。
    把你的SQL分析一下
      

  4.   

    优化,建立索引.用ADOQuery建立查询后,不要马上做你下面这句话.如果可以,最好你自己做下面代码的优化.
    如,先打开表,让人看,然后在底下,再做你的加入动作.
    =====================
    listbox1.Clear;
    edit1.SelText;
          while adoquery1.Eof =False do
          begin
            listbox1.Items.Add(diskey(adoquery1.FieldByName('cn').AsString,1000));
            adoquery1.Next;
          end;
    =======================