表中有大量的历史数据,我设了一个滤集,查询的时候太慢!!给点建议

解决方案 »

  1.   

    cdlcsbset dlcsb; 
      n1=nian;
      y1=yue;
      r1=ri;
      _itoa(nian,h,10);
      h1=h;
      dlcsb.m_strFilter="nian="+h1;
      _itoa(yue,h,10);
      h1=h;
      dlcsb.m_strFilter=dlcsb.m_strFilter+" and "+"yue="+h1;
      _itoa(ri,h,10);
      h1=h;
      dlcsb.m_strFilter=dlcsb.m_strFilter+" and "+"ri="+h1;
      dlcsb.Open(CRecordset::snapshot,_T("dlcsb"));
    大体是这样
      

  2.   

    建议你使用sql语句组织过滤试一下,因为上述方式是在客户端执行,运算量大时不可取
      

  3.   

    过滤条件(sql)的书写也十分重要.你通过SetFilter()方法设置的过滤条件要尽可能简洁与准确.在进行新的查询的时候,要将以前的过滤集置空.可通过给SetFilter()方法传递一个空的字符串.我也正在做一个法律信息检索软件,有上万的数据要处理,但是经过过滤以后,速度也保持在10秒以下!
      

  4.   

    你可以换用下面的方法试试CString filter;
    filter.Format("nian = %d AND yue = %d",nian,yue);
    dlcsb.m_strFilter = filter看看速度有没有提高!
      

  5.   

    请问写过虑条件和直接在SQL语句里写where xx=aa不同吗?
    效率不同?