现在连的一远程mssql,每次查询比较慢,现在想一下把所有记录查询出来用数据集保存起来,然后针对数据集再次查询筛选。
现在问下那个数据集如何保存查询记录,而再次查询,多谢了。

解决方案 »

  1.   

    可以把数据集中的数据放到内存中,自己维护一个链表List什么的,然后再在这个List中查询,进行二次筛选
      

  2.   

    可以保存到recordset么,然后再筛选
      

  3.   

    可以弄个遍历RecordSet中的每行记录,各个字段放到一个结构体中,结构体存放到Vector里面比如你的表有2个列,id和name
    struct strData
    {
      string id;
      string name;
    }vector<x> myVector;
    strData z;
    z.id=RecordSet里面取到的id
    z.name=RecordSet里面取到的name
    myVector.add(z);
      

  4.   

    - -  这样是可以,但好像不是那么回事,我那表查出来可能有几十万条记录。
    问下可以第一次查出RecordSet,然后再在RecordSet中查这样语法有么,多谢了。
      

  5.   

    如果直接通过SQL查询还比较慢,那么载到内存里再去过滤会更慢,并且占用更大的资源。
    最理想的做法还是在数据库里把查询的结果找到。
    (1)重新设计业务逻辑,优化查询语句
    (2)使用存储过程,
      

  6.   

    我晕
    不是有MoveNext的么,指针下移不就好了,一直都只有一个RecordSet指针啊
      

  7.   

    主要是远程的数据库服务器,高峰的时候访问比较蛮,早上很快,访问才30秒,中午可能就要10分钟了,SQL语句都是很简单的,没什么优化了,占用点资源没问题,关键我想问下有没 可以第一次查出RecordSet,然后再在RecordSet中查这样的语法?
      

  8.   

    你的意思我把几十万记录全放在vector里?
    然后再处理么
      

  9.   

    每次查询比较慢,现在想一下把所有记录查询出来用数据集保存起来
    =================================
    你放到视图或是表中不是一样的么如果是复杂的SQL语句,放到新表里效率可能还会提高,放到视图里一点效率改变都没有的