计算超时问题 ( 积分: 100 )

  • 主题发起人 主题发起人 wzquan
  • 开始时间 开始时间
W

wzquan

Unregistered / Unconfirmed
GUEST, unregistred user!
我用下面的条件从数据库中读取数据,显示超时(数据库中共有44万条数据),
那位高手帮我看看,语句有没有问题。
当我再双CPU的服务器上读取数据时,没有问题,但在双线程服务器上读取数据时,显示超时。


select distinct 所属评价单元 as qk,销售油品 as xsyp,
(select 油品名称 from 销售油品表 where 油品代码=(select top 1 销售油品 from 置换月度数据表 where 所属评价单元=a.所属评价单元 and (年月>='200601' and 年月<='200612') order by 所属评价单元 desc)) as cplb,
sum(isnull([原油商品量],0)) as yyspl,sum(Isnull([核实产油量],0)) as hscyl,sum(Isnull([原油销售收入],0)) as yyxssr,sum(Isnull([天然气销售收入],0)) as trqxssr,
Sum(isnull([原油销售税金],0)) as yyxssj,sum(Isnull([天然气销售税金],0)) as trqxssj,Sum(Isnull([天然气商品量],0)) as trqspl,sum(Isnull([核实产气量],0)) as hscql
from 置换月度数据表 a
where (年月>='200601' and 年月<='200612') and ((井别<3) and (生产时间<>0 or 井口产液量<>0 or 原油商品量<>0 or 井口产油量<>0 or 核实产油量<>0 or 井口产气量<>0 or 天然气商品量<>0 or 核实产气量<>0 or 操作成本<>0)) and (所属评价单元='1104205块' or 所属评价单元='14-16大' or 所属评价单元='安1块' or 所属评价单元='安97潜山' or 所属评价单元='笔架岭' or 所属评价单元='边台' or 所属评价单元='超稠油零散' or 所属评价单元='稠油零散' or 所属评价单元='茨13' or 所属评价单元='茨34' or 所属评价单元='茨41' or 所属评价单元='茨601区' or 所属评价单元='茨629块' or 所属评价单元='茨78-79' or 所属评价单元='茨9' or 所属评价单元='茨采零散' or 所属评价单元='大民屯零散' or 所属评价单元='大平房' or 所属评价单元='大洼' or 所属评价单元='东胜堡潜山' or 所属评价单元='杜210' or 所属评价单元='杜229(T)' or 所属评价单元='杜239计' or 所属评价单元='杜48' or 所属评价单元='杜66' or 所属评价单元='杜80兴隆台' or 所属评价单元='杜813南' or 所属评价单元='杜813兴隆台' or 所属评价单元='杜84' or 所属评价单元='杜84(T)' or 所属评价单元='杜84(T)SAGD01' or 所属评价单元='杜84绕阳河' or 所属评价单元='杜84兴隆台' or 所属评价单元='二区杜家台' or 所属评价单元='法哈牛块' or 所属评价单元='高二区' or 所属评价单元='高三区' or 所属评价单元='高一区' or 所属评价单元='海外河' or 所属评价单元='欢103' or 所属评价单元='欢127(莲)' or 所属评价单元='欢127(兴)' or 所属评价单元='欢17大西' or 所属评价单元='欢17兴东' or 所属评价单元='欢17兴西' or 所属评价单元='欢26块(兴)' or 所属评价单元='欢616(莲)' or 所属评价单元='欢629' or 所属评价单元='欢北断块' or 所属评价单元='欢小断块' or 所属评价单元='黄金带' or 所属评价单元='黄沙坨' or 所属评价单元='交力格' or 所属评价单元='锦150' or 所属评价单元='锦16(于)' or 所属评价单元='锦16兴东' or 所属评价单元='锦16兴西' or 所属评价单元='锦25' or 所属评价单元='锦27' or 所属评价单元='锦271' or 所属评价单元='锦45' or 所属评价单元='锦607' or 所属评价单元='锦611' or 所属评价单元='锦612' or 所属评价单元='锦7' or 所属评价单元='锦99杜' or 所属评价单元='锦小断块' or 所属评价单元='静安堡零散' or 所属评价单元='静北灰岩' or 所属评价单元='科尔沁' or 所属评价单元='葵花岛' or 所属评价单元='雷家地区' or 所属评价单元='牛居' or 所属评价单元='牛心坨' or 所属评价单元='欧利坨' or 所属评价单元='齐108' or 所属评价单元='齐2-15-012' or 所属评价单元='齐40' or 所属评价单元='齐40项目组' or 所属评价单元='齐古' or 所属评价单元='千12' or 所属评价单元='前2块' or 所属评价单元='前3-沈12' or 所属评价单元='青龙台' or 所属评价单元='热河台' or 所属评价单元='荣兴屯' or 所属评价单元='三区杜家台' or 所属评价单元='沈150块' or 所属评价单元='沈161块' or 所属评价单元='沈16块' or 所属评价单元='沈179块' or 所属评价单元='沈24块' or 所属评价单元='沈253块' or 所属评价单元='沈257块' or 所属评价单元='沈611块' or 所属评价单元='沈625潜山' or 所属评价单元='沈67块' or 所属评价单元='沈84-安12块' or 所属评价单元='沈95块' or 所属评价单元='曙127454兴隆台' or 所属评价单元='曙1612' or 所属评价单元='曙175' or 所属评价单元='曙采常规稠油零散' or 所属评价单元='曙采热采稠油老区零散' or 所属评价单元='曙采稀油零散' or 所属评价单元='双东' or 所属评价单元='双台子西' or 所属评价单元='四区杜家台' or 所属评价单元='太阳岛' or 所属评价单元='铁17块' or 所属评价单元='洼38块' or 所属评价单元='稀油零散' or 所属评价单元='新开' or 所属评价单元='兴隆台' or 所属评价单元='兴西' or 所属评价单元='一区古潜山' or 所属评价单元='于楼' or 所属评价单元='榆树台' or 所属评价单元='月海油田') Group by 所属评价单元,销售油品
 
没人知道?
 
真的没人知道了?
 
建议 增加一表存放 所属单元的值
.. where (加语句)
所属评价单元 in (Select B.值 From 表名)
 
不可能增加表了,这个程序是多用户使用的,要是增加表,我还得到处跑(有些地方远程打不开)
我以前是采用循环方式作的,即:
1、先读取评价单元,再根据评价单元读取单井数据,最后再把读取的数据弄到数组中,通过excel生成表格,速度慢,但不会超时;
现在采用这种方法,速度要快得多,声称1个表,只要不到60秒的时间,但只是在单CPU双线程的服务器上超时,adoquery.commandouttime=0也不好使
 
不增加表这种比较不超时很难

或者试一下
所属评价单元 in ('安1块' ','安97潜山',.....)
 
我写的有的sql语句比这个还复在,但不超时,我不知道为什么
 
那你把超时时间设置长一些吧,
 
to 壁画
我从服务器上和程序中都把commandtimeout设置成0了,还会出现这个问题,呵呵,惆死我了,我把全部源码贴出来,你们帮我参考一下
 
那你设置一个明确的超时时间,比如10分钟。我曾经遇到过,非常郁闷。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部