VB+ADO+SQL查询为何太慢

redshiliu 2008-05-27 10:02:45
一个表二十几个字段一共右7k多条数据
我在局域网上查询(非SQL服务器安装机器)使用SQL的查询分析器
select abc from xxx 需要2s
select * from xxx 需要7s
怎么会这么慢啊
机器2core 1.2G 512M内存
...全文
369 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
fj182 2008-05-28
  • 打赏
  • 举报
回复
如果客户端直接连到数据库跑SQL返回7k条记录怎么优化也快不到哪儿去,你可以试试在服务器上跑SQL然后把结果打包传给客户端
「已注销」 2008-05-28
  • 打赏
  • 举报
回复
网路是否有问题呢??
of123 2008-05-28
  • 打赏
  • 举报
回复
这里需要一个抉择:Client 游标还是 Server 游标。

Client 初次查询慢,以后就很快。如果你可以在后台将主要的记录集查询回来,并且客户端对记录集有极其密集的访问,这是一个不错的选择。但是记住,它是以占用网络带宽为代价的。如果你的众多客户端都这样做,结果也是灾难性的。

Server 游标是 ADO 的缺省设置,显然是微软推荐的。它对资源的损耗最小。代价是每一次查询都要在网络上传送数据。如果客户端上的查询是偶发性的,这样做应该比较合理。

实际上,网络数据库应用设计,一定要考虑网络传输负载。

  • 打赏
  • 举报
回复
应该采取SQL语句分页方式 而不是ADODB自身分页功能
  • 打赏
  • 举报
回复
1行最多也可以 8060个字节
7000行也可以有56M数据了~ 7s 确实不算很过分
redshiliu 2008-05-27
  • 打赏
  • 举报
回复
在服务器上执行时间使用SQL的查询分析器几乎不需要时间
redshiliu 2008-05-27
  • 打赏
  • 举报
回复
有索引的
我主要的目的是在客户端上(VB+ADO)
查询表中个一个字段abc
然后遍历所有记录把字段内容添加到一个combox里面
这里有个问题,如果rec.cursorlocation设置为aduseclient
查询时间特别长
如果设置为aduseserver查询时间就缩短不少但是在遍历记录时候的
rec.movenext所消耗的总时间就特别长了。
如何才能让这个过程需要时间缩短?急用,大家帮帮忙。。。
li_net 2008-05-27
  • 打赏
  • 举报
回复
表中有索引么?
Fanks 2008-05-27
  • 打赏
  • 举报
回复
不会吧?有二进制字段或图像字段吗?
  • 打赏
  • 举报
回复
看看直接在服务器上执行要多少时间
tortoisespeed 2008-05-27
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 star_ais 的回复:]
select abc from xxx 需要2s
select * from xxx 需要7s

据我了解,好像是因为SQL内部机制问题。当你确定一个字段的时候,它查询的速度会上升。
比如:
xxx表中有a,b,c三个字段。

select a,b,c from xxx
select * from xxx
以上两个SQL文检索的数据是一样的,但是执行的速度是有差别的。自己可以去试验一下。
[/Quote]


说得有道理,微软专家也是这样说的,但在只有7K多条的表中做查询,还是慢得很啊,原因是楼主计算机的内存太小了,sql实际使用的内存就更小,你给SQL分配1G内存,速度肯定会飞上天的,当然内存再多对速度提升的贡献率就有限了.
star_ais 2008-05-27
  • 打赏
  • 举报
回复
select abc from xxx 需要2s
select * from xxx 需要7s

据我了解,好像是因为SQL内部机制问题。当你确定一个字段的时候,它查询的速度会上升。
比如:
xxx表中有a,b,c三个字段。

select a,b,c from xxx
select * from xxx
以上两个SQL文检索的数据是一样的,但是执行的速度是有差别的。自己可以去试验一下。

1,217

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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