数据库按天进行存储,当一天内产生的记录非常多的时候,执行sql查询,非常慢。
原来设置了一个进度条,当在while(!pRst->adoEOF)中循环的时候,显示进度,现在发现,数据库只是查询就占据了很多时间,有什么好办法,可以避免。

解决方案 »

  1.   

    不是C的问题.
    1.合理设计索引.
    2.优化SQL语句.
      

  2.   

    pRst->Open(....如果是在这句执行时间很长按天存储,那么你要对表的时间字段或者记录天的字段进行索引,使之有序,可以用聚簇索引(物理顺序)或者普通非聚簇索引(索引表顺序)
    sql查询的时候,
    1显示构造所需字段,
    2条件增加区段select f1,f2,f3... from table1 where dday between 某日 and 某日
      

  3.   

    程序确实是在Open打开的时候,引起的漫长等待,同样的sql语句在sqlserver中执行查询也发现,下面用来显示记录的网格, 出现空白现象。
    记录本身是有序的,按照时间保存的。
    如何设计索引,有什么规则没有,
      

  4.   

    你的sql语句一次会返回多少记录集,如果很大的话,即使给table 增加索引也不乐观你可以使用服务端游标,应付大记录集的open
      

  5.   


    看样子,好像跟索引没求关系。索引只在大数据量中寻找小量数据效果明显。如果SQL语句返回20万条记录,你说它能快到哪里去啊?依我看啊,还是设计的问题,你可以加入一些限制条件,使返回的记录尽量少一些。比如:加入前后时间段的限制等。