难缠的VIEW,我写速度太慢,请教。。。
情况比较复杂:
共有4个表:
表1:项目计划表 (约80条记录)
字段:项目名 数量
a 22
表2:项目下小项目表 (约3000条记录)
字段:项目名 小项目名
a a1
a a2
表3:项目下小项目表详细项表 (约6000条记录)
字段:小项目名 具体项目
a1 a11
a1 a12
a2 a21
a2 a22
表4:基础数据表 (约4000条记录)
字段:具体项目 金额
a22 10.0
a12 2.0
现需要统计每个项目的金额和。做一个VIEW。
关键是每个小项目名下的具体项目在基础数据表中不一定都有,只统计基础数据表中有的项。
我的做法:
先对项目表建立一个CURSOR FOR SELECT 项目名,数量
在上述CURSOR循环中再对项目下小项目表建立一个CURSOR FOR 小项目名
用 SELECT SUM(金额) FROM 基础数据表 WHERE 具体项目 IN
(SELECT 具体项目 FROM 项目下小项目表详细项表 WHERE 小项目名 =@小项目名)
注:我用INNER JOIN ON 代替IN ,好象执行时间没什么变化。
最后利用变量求出总金额。
大约耗时34秒。
请大家看看什么问题,有什么好的思路?谢先。