我的SQL算法执行效率好低啊,数据库无响应,快进来帮帮我

cydall 2010-10-21 08:20:38
select  '环比' as years,
str((select month1 from HB2010_JS)*1.0 /(select month12 from Year2009_View)*100) + '%' month1,
str((select month2 from HB2010_JS)*1.0 /(select month1 from Year2010_View)*100) + '%' month2,
str((select month3 from HB2010_JS)*1.0 /(select month2 from Year2010_View)*100) + '%' month3,
str((select month4 from HB2010_JS)*1.0 /(select month3 from Year2010_View)*100) + '%' month4,
str((select month5 from HB2010_JS)*1.0 /(select month4 from Year2010_View)*100) + '%' month5,
str((select month6 from HB2010_JS)*1.0 /(select month5 from Year2010_View)*100) + '%' month6,
str((select month7 from HB2010_JS)*1.0 /(select month6 from Year2010_View)*100) + '%' month7,
str((select month8 from HB2010_JS)*1.0 /(select month7 from Year2010_View)*100) + '%' month8,
str((select month9 from HB2010_JS)*1.0 /(select month8 from Year2010_View)*100) + '%' month9,
str((select month10 from HB2010_JS)*1.0 /(select month9 from Year2010_View)*100) + '%' month10,
0 month11,0 month12,
str((select avgs from HB2010_JS)*1.0 /(select avgs from Year2009_View)*100) + '%' avgs ,
str((select sums from HB2010_JS)*1.0 /(select sums from Year2009_View)*100) + '%' sums


上面的是我的原代码,我写成简单的如下:

A/B,
A/B,
A/B,
.....


执行一条,勉强可以出来结果,一起执行,数据库就没有响应了,我感觉是除法的问题,因为我去掉了那个转换函数也是一样。。。有谁帮我忙,或者给我找个新方法,我这个视图中的执行语句,因为数据每个月在变化。需要用到视图
...全文
69 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
chuifengde 2010-10-21
看你的语句,难道每个视图的结果最后只有一条记录?
还是分多条执行吧
回复
claro 2010-10-21
各表的数据量如何?

这么多表同时进行全表扫描,会超时的。
回复
zsh0809 2010-10-21
把最后一个逗号去掉
SUMS=STR(H.SUMS*1.0/YV.SUMS) +'%'
回复
zsh0809 2010-10-21
try一下
SELECT  '环比' AS YEARS,
MONTH1=STR(H.MONTH1*1.0/YV.MONTH12)+ '%',
MONTH2=STR(H.MONTH2*1.0/Y.MONTH1)+ '%',
MONTH3=STR(H.MONTH3*1.0/Y.MONTH2)+ '%',
MONTH4=STR(H.MONTH4*1.0/Y.MONTH3)+ '%',
MONTH5=STR(H.MONTH5*1.0/Y.MONTH4)+ '%',
MONTH6=STR(H.MONTH6*1.0/Y.MONTH5)+ '%',
MONTH7=STR(H.MONTH7*1.0/Y.MONTH6)+ '%',
MONTH8=STR(H.MONTH8*1.0/Y.MONTH7)+ '%',
MONTH9=STR(H.MONTH9*1.0/Y.MONTH8)+ '%',
MONTH10=STR(H.MONTH10*1.0/Y.MONTH9)+ '%',
0 MONTH11,0 MONTH12,
AVGS=STR(H.AVGS*1.0/YV.AVGS) +'%',
SUMS=STR(H.SUMS*1.0/YV.SUMS) +'%',
FROM HB2010_JS H,YEAR2009_VIEW YV,YEAR2010_VIEW Y
回复
zsh0809 2010-10-21
这么多子查询...
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2010-10-21 08:20
社区公告
暂无公告