关于速度,效率,COM VB IIS ASP 高手请进

xmlingo 2001-11-23 09:04:46
我做一个COM 通过ADO+ODBC访问SYBASE 数据库返回数据集(表格有1万多条记录 )
在ASP中调用此COM访问此表显示数据集的内容并实现翻页功能(每页显示50行),
越往后翻速度越慢 ,当当前页的起始行为8000行时 一页 要花26秒左右
(机器Pii433/128M/IDE20G 装有SYBASE 11.92+IIS5.0+WIN2000)
甚至5个用户同时访问这个页面,都从8000行取起,则过一时间 SYBASE会死掉IIS不动
如何才能提高速度?,如何才能让更多人同时访问
用ASP直接访问数据 并显示(不通过COM,功能相同)的时间与用COM的费时差不多

主要的VB(asp)语句如下:
DataConnect.Open "DSN=data;UID=sa;PWD=ok;OLE DB Service=-1"
Set DataRecord.Open "Select * From TABLE ",DataConnect, adOpenForwardOnly, adLockReadOnly
DataRecord.Move(lStartRow) //起始行 当lStartRow >8000 时 单这一句在VB里就得费7秒左右 这一句占总时间90%

Do While NOT DataRecord.EOF And i<50
....
....
Loop
DataRecord.Close
.....
--------------------------
xmlingo@163.com ..
...全文
119 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
sdsuper 2001-11-29
  • 打赏
  • 举报
回复
用临时表拉。呵呵,骗点分数~~~~
xmlingo 2001-11-26
  • 打赏
  • 举报
回复
gzd ~up up
yyz_xyz 2001-11-24
  • 打赏
  • 举报
回复
select field1,field2,.. from table where fielda=a and fieldb=b and rownum between 8000 and 8050
(注:oracle的SQL语句)

1.不要轻意用select * from ..,请指定你想要的列,原因无用的列,ADO一样要为你创建无用的COM对象。
2.为where后面的field 建产索引。
3.不要返回所有的记录集再来查找到你想要数据。rownum between 8000 and 8050,只返回一面,才50条记录,无需返回你前面的8000条无用的记录,速度快得多了。
xmlingo 2001-11-24
  • 打赏
  • 举报
回复
to yyz_xyz(众众) 
ORACLE 可以这样可是SYBASE不行
xmlingo 2001-11-23
  • 打赏
  • 举报
回复
to TonyJoule(寒星㊣):
谢谢你,你的程序对我没有用的
第一,我本来就没有用ADO的分页程序倒不是因为速度
第二,其它我看不太懂你的程序
第三,我的程序用不了rs_temp.AbsolutePosition因为我用的数据集是仅向前类型

to yyz_xyz(众众) 
SELECT * FROM TABLE WHERE field=a and fieldb=b 这种能优化吗?

yyz_xyz 2001-11-23
  • 打赏
  • 举报
回复
ADO最好不要通过ODBC来联,用Sybase的OLE DB来联
用户ADO的记录集是很耗资源的!每生成一条记录时,都要构造很多个COM对象的。我以前打开10000条记录时几乎可以等到吃一顿饭才可以处理得完!
试下优化你的SQL
xmlingo 2001-11-23
  • 打赏
  • 举报
回复
to TonyJoule(寒星㊣) 
i had get ur mail ,thx a lot
i m testing ....
AfxBeginThread 2001-11-23
  • 打赏
  • 举报
回复
realm_xm@263.net,thanks
寒星 2001-11-23
  • 打赏
  • 举报
回复
已经发了,请查收。
Johnyin 2001-11-23
  • 打赏
  • 举报
回复
优化分页:
有两种方式:用procedure分页,只返回要取出当前页的记录数。
在前端页面分页时只取当前页的记录出来(也就是50条,如楼上所讲)
sdsuper 2001-11-23
  • 打赏
  • 举报
回复
UP`
寒星 2001-11-23
  • 打赏
  • 举报
回复
这样吧,我发个例子你试试。
寒星 2001-11-23
  • 打赏
  • 举报
回复
自己写分页程序,不要用ADO提供的。
xmlingo 2001-11-23
  • 打赏
  • 举报
回复
to zheng_rui() 
你应该说清楚一点,我无法理解你的意思!这样子不等于白说?
zheng_rui 2001-11-23
  • 打赏
  • 举报
回复
用cache

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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