前辈们请教个问题
统计 300万条数据 比如
select sum(as),sum(as),sum(as),sum(as),sum(as),b.name,count(b.name) as name  from test1 a inner join test2 b on a.id=b.id
GROUP BY b.name
不加条件执行5秒
加个条件 就要30秒
where a.c =1
速度慢导致程序无响应求教,建视图效果还是一样,就优化指教
SELECT sum(allqty), sum(allweight), sum(allvolume), sum(accountsdelivery) AS ysfh, sum(accountsreceiving) AS yssh, sum(fact_total) AS ssje, sum(favprice) AS yhje,  sum(detail_total) AS yfhj, sum(goods_price) AS dsk, sum(pay_goods_price) AS dzk, sum(arrive_total) AS dfhj,  sum(info_price) AS xxf, company_t.full_name AS comname
FROM freight_t  LEFT OUTER JOIN company_t ON freight_t.company_id = company_t.object_id LEFT OUTER JOIN
area_t ON freight_t.end_area_id = area_t.object_id LEFT OUTER JOIN
 area_t AS area_t_1 ON freight_t.start_area_id = area_t_1.object_id
GROUP BY company_t.full_name

解决方案 »

  1.   

    看一下执行计划!
    底层是怎么实现的,不是很清楚,但是我想可能是:不加条件的时候会直接去根据数据库的statistics对象的信息来查询
    见:http://technet.microsoft.com/zh-cn/library/ms190911.aspx但是如果加上条件就要进行全表扫描了,而且你还关联了那么多表。请大牛指正。
      

  2.   

    select sum(as),sum(as),sum(as),sum(as),sum(as),b.name,count(b.name) as cont from test1 where datetimes>='....' and datetimes<='....' 
    GROUP BY name不关联表 只查1个表 索引ID  datetimes name
    不加 WHETE条件 执行 2秒 
    不加 GROUP BY name 执行 2秒
    2个条件同时加上统计 需要16秒~~
    前辈们 忘指教
      

  3.   

    提个想法...你把你的那个a.c =1的条件放在B表中不行吗?
    之后在a表和b表关联时加上你的条件.a join b on a.a=a.b and a.c=b.c之类的...你的条件很多.算我没说.