我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上输入字符全(或字符)的时候,它的显示速度太慢了,
如何提高显示速度?有什么别的方法?
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上输入字符全(或字符)的时候,它的显示速度太慢了,
如何提高显示速度?有什么别的方法?
数据库本身的设计问题。估计连索引都没有用上,你字段cn建立索引了吗?
最好建立成聚集索引,能够提高你的速度。
如果你想快速得到数据,那么有一种方法,你试试filter的方法。不过10万条感觉
速度也不是很快,而且占用资源很大,他需要把所有的数据都放入内存后才filter的。
如果用主键比索引更快一些!
把你的SQL分析一下
如,先打开表,让人看,然后在底下,再做你的加入动作.
=====================
listbox1.Clear;
edit1.SelText;
while adoquery1.Eof =False do
begin
listbox1.Items.Add(diskey(adoquery1.FieldByName('cn').AsString,1000));
adoquery1.Next;
end;
=======================