一分鐘500左右的記錄,這么說historylist會變得很龐大...所以你的
1、定義好索引(除主鍵外,常用的查詢字段);
2、sql下的條件要避免全表掃描;

解决方案 »

  1.   

    看这语句在mysql自己的工具里执行速度如何,可能要动一下数据库了,加些索引啥的
      

  2.   

    建议
    1.优化sql,优化表
    2.使用线程,防假死
      

  3.   

    'select * from Tellist where dialing like 
    你的这个表中字段是不是很多,把*号换成字段名看看
      

  4.   

    sql優化,參考一下這個:http://blog.csdn.net/Avan_Lau/archive/2010/03/02/5338205.aspx
      

  5.   

    我这几天基本练熟了SQL的过程,触发,函数,不过发你那个码的长短跟库的关的系不大了,只是还可以优化而以最主要的是2-3分种有多少数据在里面
    'select * from Tellist where dialing like 
    你的这个表中字段是不是很多,把*号换成字段名看看
    这个可行,但数据少的话影不明显,
    主要个人觉得还是listview1这个的问题,
    我的MP3搜索过10万的数据没发现慢
    while not eof do
    begin
    if (strtodatetime(fieldbyname('time').AsString)>=trunc(datetimepicker1.Date)+(datetimepicker2.Time-trunc(datetimepicker2.Time))) and (strtodatetime(fieldbyname('time').AsString)<=trunc(datetimepicker3.Date)+(datetimepicker4.Time-trunc(datetimepicker4.Time))) then//这里对于时间段条件进行判断
    begin
    if strtoint(fieldbyname('holding').AsString)>=strtoint(edit1.Text)*60 then//这里对通话时间太于多少进行条件查询
    begin//之后符合条件的在这里显示
    listview1.Items.BeginUpdate;//因为显示时怕表头的字没有了不好看,所以加了这句和最后一句
    Sitem:=listview1.Items.Add;
    Sitem.Caption:=fieldbyname('dialing').AsString;
    Sitem.SubItems.Add(fieldbyname('called').AsString);
    Sitem.SubItems.Add(fieldbyname('Holding').AsString);
    Sitem.SubItems.Add(fieldbyname('time').AsString);
    listview1.Items.EndUpdate;
    wait(2);//因为显示时怕闪的太厉害加了一个等待,就不太会闪
    end;
    end; //if
    next;
    查一次就画一次
    这个量非常之大
    如500条数据
    500*假设你上面有20条
    上面语句执行一条是1秒你看时间是多长
      

  6.   

    樓主有說明一個現象“那怕就是有10条符合条件数据,查询的界面都要假死2-3分钟才会把数据显示出来”從這個判斷,一般是sql查詢方面的問題。但最好是跟蹤看看,時間耗在哪了??
      

  7.   

    现在还是搞不清,我同时作PHP作了一个程序,查询的方式,以及SQL语句一样,但是就不会出现时间很长的现象,也不会假死,一下就显示出来了,所以现在问题不知出在那里,况也有清数据表,表中不到1W条数据,也是这样
      

  8.   

    应该是listView的问题,建议你先改用memo控件,试一下便知我说得对不对,不要用wait啊。
    如果你一定要用listView的话,那一定要用它的数据感知功能,那样才不会慢。