怎么这么慢啊!!!!100分

heijiangff 2003-01-11 02:39:00
我用的是pb8+oracle8.1.7
数据库里有四张表
1,交接箱信息表
  结构:交接箱编号, 容量(对)...(其他的一些属性)主键是编号(5000条记录)
     j00101 400 ......
     j00102 800 ....
..............................
j00801 400 ......
2,交接箱线序表
  结构:交接箱编号, 线序,状态,  电话号码....(90万条记录,已建索引)
     j00101 1 0(空闲)  null
j00101 2 1(使用)  5926711
     j00101 3 1(使用)  5926712
j00101 4 1(使用)  5926713
j00101 5 1(使用)  5926714
    .............................
j00101 400 2(坏线)  
 如果是400对的j00101交接箱就有400条记录

3,计费表,
   结构:电话号码:年,月,月租,市话.........
5926711 2002 11 15 23.45
5926712 2002 11 15 32.98
.........................................
5926714 2002 11 15 98.34
一共有90万条记录
4,统计表
  结构:交接箱编号,年,月,线序使用情况,总月租,总市话....


要求统计结果放在“统计表”里
我的做法:
由于不知道怎样直接在数据库里按rowid 依次读出交接箱编号:我通过数据窗口进行retrieve()后再按getrow()读交接箱编号(浪费了时间,不知怎样改进,最好直接从数据库里按顺序读)
for i=1 to dw_1.rowcount()
bh=dw_1.getitemstring(i,"jjxbh")
然后我再设一个游标从线序表里找到该交接箱的线序和对应的电话号码;
 通过游标计算线序使用情况,同时根据号码在计费表进行累计求和
最后插入统计表.

这样速度太慢,计算一条需3-4秒(如果有10万个交接箱,计算完需5天,开玩笑!!),怎样优化呢?请大家讨论,人人有分!!!!


...全文
92 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
888888888888 2003-05-10
  • 打赏
  • 举报
回复
关注
xumail 2003-01-18
  • 打赏
  • 举报
回复
up
erigido 2003-01-18
  • 打赏
  • 举报
回复
up
flyhot 2003-01-11
  • 打赏
  • 举报
回复
试用存储过程实施看!
bomber2001 2003-01-11
  • 打赏
  • 举报
回复
用rowscopy可能会好点,可以用compute字段来代替不尽相同的字段
ropriest 2003-01-11
  • 打赏
  • 举报
回复
根据统计表的字段,从表1、2、3中取出相应的字段,作一个跟统计表字段一样的DataStore,然后在程序中,从DataStore中循环取出数据,RowsCopy到统计表中,这样应该要快得多
alwaystar 2003-01-11
  • 打赏
  • 举报
回复
计费表统计可以这样写
select 电话号码 , sum(市话费用) from 计费表
where 年=? 月=?
group by 电话号码
alwaystar 2003-01-11
  • 打赏
  • 举报
回复
不知道你的线序表与计费表是用什么连接的,是电话号吗?

这样的循环的确会很慢,因为毕竟是在前台写的代码,
在后台做个用于统计的视图,然后和交接箱表做查询用数据窗显示
同时:ROWID是可以使用的,在ORACLE中可以直接写
select column_name from table_name where rowid = 1;
就相当于MSSQL中的
select top 1 column_name from table_name;
1. 显示的为最近一个月的任务!最多显示100条任务 2. 新手有问题请联系你的上线. 3. 必须安装 Microsoft.NET Framework 3.0 才能运行投票软件!已经装了2.0的最好换成3.0的! 下载地址 更多下载地址 4. 价格说明:会员价格/下线提成/第一价格(所有价格单位都是 计算的) 会员价格: 投一票你所赚的钱. 下线提成: 意思是你的每个下线做投票任务每投 一票你获得的奖励! 第一价格: 意思是每个投票任务平台内谁的票数最多的就按 第一价格 结算!其他的按 会员价格 算 ! 5. 投票流程: 安装装Microsoft.NET Framework--下载投票软件--填上工号--开始投票--等着收钱! 6. 有的任务不稳定,有时快有时,所以导致有的任务评价不准确. 7. 投票软件经常更新,软件不好用了最好重新下载!. 8. 不换ip的任务都不断网,可以挂着做任何事情,最好把不换ip的任务都挂上!也可以和换ip的任务 一起挂或则同时做手工活! 9. 由于站长精力有限,有些任务结束了没来的及更新,所以有的 可做任务 已经结束了不能做了还没 放到 暂停的任务里去. 10. 暂停的任务一定不可以做!不管软件显示有票还是后台显示有票都不能做!否则后果自负! 11. 有时候做着做着后台的票突然没了,不要紧张,后台经常转移,数据我这有不会少!有时候发现结 算的数据不对也是由于后台转移造成的,但是票数不会少的. 12. 有时候软件上有票,后台上没票,你可以 点 停止投票 在点 开始投票 一般这样票数就上传了, 要是这样还没上票就关了软件在开吧,还不行就换个任务. 13. 经常有人问昨天我做了任务,后台有票,怎么今天帐户还没钱呢!?首先请先确认你做的任务 已经结束,因为没结束的任务是不会结算的,没结算就不会加钱的帐户上。 有时候有的任务已经结束,但是不确定是否还会加票所以也没结算。另外投票任务结算后我们会在24小时内录入大家的数据进入后台(因为任务完毕后,录入数据都是人工 录入数据,数量巨大,故需要在24小时以内完成),大家就可以进自己的后台看见自己的任务票数,就可以申请提现了(特别注意:本平台支付属于申请支付,也就是自己进平台 的后台,点击申请支付),大家申请提现后我们会在24小时内给大家支付的。 14. 老是有人写错工号,写错工号都是白做的,每个任务的工号是什么去看任务说明有.工号一定要 按要求写,要加半角的"-"!有多台电脑的和有投票群的在工号后台加"-**",一定要"-"

401

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 非技术版
社区管理员
  • 非技术版社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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