当前位置: 代码迷 >> Sql Server >> 很久没有来CSDN了,有一急有关问题,用了聚合函数,查询太慢
  详细解决方案

很久没有来CSDN了,有一急有关问题,用了聚合函数,查询太慢

热度:19   发布时间:2016-04-24 10:00:57.0
很久没有来CSDN了,有一急问题,用了聚合函数,查询太慢
每天发货产生记录如下:表A
客户,单号,数量,单价,金额
01 14001 500 20 10000
02 14002 500 30 15000
……

查总欠款时,我用的方法是:
select 客户初欠+sum(表A.金额) from 客户表

客户一多,速度极慢
求解决办法
------解决思路----------------------
能不能考虑将用到两个函数的地方先用语句处理到临时表中,在用临时表和主表关联进行查询,这样避免了逐条计算
------解决思路----------------------
这样的函数适合于单个客户的统计,全体统计还是直接分组统计好
WITH YS AS (
    SELECT ccuscode,
           CONVERT(DECIMAL(18,2),
                   SUM(iquantity* cinvunitcost)
                  ) ysimoney
      FROM rdrecords
     WHERE Isnull(cinvfahuodate,'') <> ''
  GROUP BY ccuscode
),
SS AS (
    ...
)
SELECT id,
       ccuscode,
       ccusabbname,
       imoney,
       ys.ysimoney,
       ss.ssimoney,
       (imoney - ISNULL(ys.ysimoney,0) + ISNULL(ss.ssimoney,0)) AS ye
  FROM customer
  LEFT JOIN YS ON ys.ccuscode = customer.ccuscode
  LEFT JOIN SS ON ss.ccuscode = customer.ccuscode