vc操作mssql一小问题

liooi 2009-12-15 06:05:33
现在连的一远程mssql,每次查询比较慢,现在想一下把所有记录查询出来用数据集保存起来,然后针对数据集再次查询筛选。
现在问下那个数据集如何保存查询记录,而再次查询,多谢了。
...全文
147 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
wchlp 2009-12-15
  • 打赏
  • 举报
回复
友情顶贴
MoXiaoRab 2009-12-15
  • 打赏
  • 举报
回复
每次查询比较慢,现在想一下把所有记录查询出来用数据集保存起来
=================================
你放到视图或是表中不是一样的么

如果是复杂的SQL语句,放到新表里效率可能还会提高,放到视图里一点效率改变都没有的
liooi 2009-12-15
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 tr0j4n 的回复:]
引用 10 楼 liooi 的回复:
引用 9 楼 tr0j4n 的回复:
对啊,按你的要求,就这样咯

没有那种查两次的语法?
看来我设想错了...

什么查两次?
[/Quote]
第一次全部查询出来,保存在视图或者表里面,然后再在视图或表里面筛选
MoXiaoRab 2009-12-15
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 liooi 的回复:]
引用 9 楼 tr0j4n 的回复:
对啊,按你的要求,就这样咯

没有那种查两次的语法?
看来我设想错了...
[/Quote]
什么查两次?
sb3day 2009-12-15
  • 打赏
  • 举报
回复
使用视图
liooi 2009-12-15
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 tr0j4n 的回复:]
对啊,按你的要求,就这样咯
[/Quote]
没有那种查两次的语法?
看来我设想错了...
MoXiaoRab 2009-12-15
  • 打赏
  • 举报
回复
对啊,按你的要求,就这样咯
liooi 2009-12-15
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 tr0j4n 的回复:]
引用 4 楼 liooi 的回复:
引用 3 楼 tr0j4n 的回复:
可以弄个遍历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);

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

我晕
不是有MoveNext的么,指针下移不就好了,一直都只有一个RecordSet指针啊
[/Quote]
你的意思我把几十万记录全放在vector里?
然后再处理么
liooi 2009-12-15
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 whs1980 的回复:]
如果直接通过SQL查询还比较慢,那么载到内存里再去过滤会更慢,并且占用更大的资源。
最理想的做法还是在数据库里把查询的结果找到。
(1)重新设计业务逻辑,优化查询语句
(2)使用存储过程,

[/Quote]
主要是远程的数据库服务器,高峰的时候访问比较蛮,早上很快,访问才30秒,中午可能就要10分钟了,SQL语句都是很简单的,没什么优化了,占用点资源没问题,关键我想问下有没 可以第一次查出RecordSet,然后再在RecordSet中查这样的语法?
MoXiaoRab 2009-12-15
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 liooi 的回复:]
引用 3 楼 tr0j4n 的回复:
可以弄个遍历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);

- -  这样是可以,但好像不是那么回事,我那表查出来可能有几十万条记录。
问下可以第一次查出RecordSet,然后再在RecordSet中查这样语法有么,多谢了。
[/Quote]
我晕
不是有MoveNext的么,指针下移不就好了,一直都只有一个RecordSet指针啊
whs1980 2009-12-15
  • 打赏
  • 举报
回复
如果直接通过SQL查询还比较慢,那么载到内存里再去过滤会更慢,并且占用更大的资源。
最理想的做法还是在数据库里把查询的结果找到。
(1)重新设计业务逻辑,优化查询语句
(2)使用存储过程,
liooi 2009-12-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 tr0j4n 的回复:]
可以弄个遍历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);
[/Quote]
- - 这样是可以,但好像不是那么回事,我那表查出来可能有几十万条记录。
问下可以第一次查出RecordSet,然后再在RecordSet中查这样语法有么,多谢了。
MoXiaoRab 2009-12-15
  • 打赏
  • 举报
回复
可以弄个遍历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);
liooi 2009-12-15
  • 打赏
  • 举报
回复
可以保存到recordset么,然后再筛选
oyljerry 2009-12-15
  • 打赏
  • 举报
回复
可以把数据集中的数据放到内存中,自己维护一个链表List什么的,然后再在这个List中查询,进行二次筛选

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧