多表统计综合查询,求助!!

chinull 2005-06-13 09:51:34
select sum(wg_kcD1.NCKC*wg_BZML.JHDJ),sum(wg_kcD1.QMKC*wg_BZML.JHDJ),sum(wg_kcD1.LJSR*wg_BZML.JHDJ), sum(wg_kcD1.LJFC*wg_BZML.JHDJ)
from wg_kcD1,wg_BZML
where wg_kcD1.LXBZ<> 'DC' and wg_kcD1.QCDM = wg_BZML.QCDM

select sum(wg_kcD2.NCKC*wg_BZML.JHDJ),sum(wg_kcD2.QMKC*wg_BZML.JHDJ),sum(wg_kcD2.LJSR*wg_BZML.JHDJ),sum(wg_kcD2.LJFC*wg_BZML.JHDJ)
from wg_kcD2,wg_BZML
where wg_kcD2.LXBZ<> 'DC' and wg_kcD2.QCDM = wg_BZML.QCDM
...

等13个表,每个表有2万条记录左右
怎么提高查询速度
另外我用union连接速度反而没有现在快。
怎么把这些查询合到一个表,而且让速度提上去。
目前速度在3秒左右。
...全文
111 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
mengzulin 2005-06-13
  • 打赏
  • 举报
回复
Union All是非常漫的,如果你的数据不是经常改变的你可经用索引视图.
paoluo 2005-06-13
  • 打赏
  • 举报
回复
你的表有那么多,而且数据量也有那么多,速度肯定不会很快的。

比较简单的就是这么写了。


select sum(A.NCKC*B.JHDJ),sum(A.QMKC*B.JHDJ),sum(A.LJSR*B.JHDJ), sum(A.LJFC*B.JHDJ)
from wg_kcD1 A,wg_BZML B
where A.LXBZ<> 'DC' and A.QCDM = B.QCDM
Union All
select sum(A.NCKC*B.JHDJ),sum(A.QMKC*B.JHDJ),sum(A.LJSR*B.JHDJ), sum(A.LJFC*B.JHDJ)
from wg_kcD2 A,wg_BZML B
where A.LXBZ<> 'DC' and A.QCDM = B.QCDM
...
huangjianyou 2005-06-13
  • 打赏
  • 举报
回复
SELECT SUM(a.NCKC*b.JHDJ),SUM(a.QMKC*b.JHDJ),SUM(a.LJSR*b.JHDJ), SUM(a.LJFC*b.JHDJ)
FROM wg_kcD1 AS a
LEFT JOIN wg_BZML AS b ON a.QCDM = b.QCDM
WHERE a.LXBZ<> 'DC'

我用关联。建议用别名,编写方便兼清晰。

^_^
randoll127 2005-06-13
  • 打赏
  • 举报
回复
首先是要要对表建索引,这个十分的重要,其次是语句感觉没有什么办法提高了,或许你可以考虑用循环插入一个临时表,然后再进行查询。
chinull 2005-06-13
  • 打赏
  • 举报
回复
先谢谢大家规范我上面的sql写法。
chinull 2005-06-13
  • 打赏
  • 举报
回复
FROM wg_kcD1 AS a
LEFT JOIN wg_BZML AS b ON a.QCDM = b.QCDM
与from wg_kcD2,wg_BZML有什么区别?
是不是就是语法上的区别吧?

Union All确实很慢,

索引视图?=索引+视图?

我这些表不适合使用索引
至于视图是这样的,对查询速度不会起很大的改变,应该。
目前我用的是存储过程。

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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