特急!!!1数据查询速度问题

kong佳 2004-01-06 10:02:01
VB连SQL数据库后台,每个数据查询我都用if rs.eof=false and rs.bof=false then如果数据量少的话,速度还可以忍受,但一旦数据量达到几千万条的话,我不敢想象,现在请教各位高手,应该用什么方法提高它的提取速度.谢谢.
...全文
31 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
华芸智森 2004-01-19
  • 打赏
  • 举报
回复
1.
if not(rs.eof and rs.bof) then

else

end if

2.
IF RS.RecordCount>0 THEN

ELSE

END IF
Johnny_Zhang 2004-01-19
  • 打赏
  • 举报
回复
UP
海牛 2004-01-08
  • 打赏
  • 举报
回复
你做什么查询啊??
yzbsouthwestforest 2004-01-08
  • 打赏
  • 举报
回复
不能在数据库中建一个索引吗?
csj43269 2004-01-08
  • 打赏
  • 举报
回复
顶顶顶顶顶。。。。。。。。。。
饮水需思源 2004-01-08
  • 打赏
  • 举报
回复
'如果只是确认数据表中的记录条数的话,可以这样试试:
strsql=" select count(*) as icount from tablename"
if rs.state=adstateopen then rs.close
rs.open strsql,conn,adopenkeyset,adlockreadonly
msgbox rs!icount
set rs=nothing
AresChen 2004-01-08
  • 打赏
  • 举报
回复
for循环和if这两个语句本身效率是没有多大差别,for循环也是内部需要判断,非要比个高低的话,不执行个几百、几千万甚至上亿次,是难以区分的,这一点点效率的提高和目前动不动就几G的CPU速度来比,没有多大的必要。
个人认为用recordcount的好处是程序读起来比较清晰,而且可以作出比如进度条一类的需求。但坏处是,不是所有的连接方式和recordset的打开方式都可以返回正确的recordcount。
WangPengAn 2004-01-08
  • 打赏
  • 举报
回复
我們在速度方面的做法是取得 rs.RecordCount 然后把它給一個變量﹐然后做 For 循環
AresChen 2004-01-08
  • 打赏
  • 举报
回复
补充一句,有时候我们会把大批量的数据提取到客户端,然后进行进一步的计算,比如比较、过滤等,但这种做法非常不可取,应该尽量的使用SQL语句去直接完成你所需的结果,如果感觉用一条SQL语句无法完成、或者速度太慢,那么可以有几个办法:
1,去问问别人怎么写;
2,考虑一下现有的数据库结构是否合理;
3,考虑用视图、存储过程代替单一的SQL语句;
4,用分析器对索引进行优化。
AresChen 2004-01-08
  • 打赏
  • 举报
回复
一般的数据展示的原型是
while not rst.eof
do something here
...
rst.movenext
wend
用这种原型的程序,效率的确是跟你的结果集的大小有关,但是,一般的应用中,几千条的都少,更别提几万以上的了。所以,如果你需要返回的结果集会有几万、几十万条记录,你就需要考虑用分页、分类展开等方式了。而且,如此大数量的结果集的返回,无论对于数据库还是客户端都是很大的一个负担,在实际的应用当中应该是需要避免这种情况的出现。
hlq8210 2004-01-06
  • 打赏
  • 举报
回复
用 for intIndex=0 to rs.RecordCount
Ranma_True 2004-01-06
  • 打赏
  • 举报
回复
if rs.eof
会慢吗?
netbandit 2004-01-06
  • 打赏
  • 举报
回复
两个条件分开写
zeq258 2004-01-06
  • 打赏
  • 举报
回复
if rs.eof and rs.bof then
..................
end if

1,216

社区成员

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

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