日期:2014-05-17  浏览次数:20861 次

一条简单的语句里加了个join 为什么就慢了几十秒?
    select a.key_xil, 
       sum(amount) as amount 
      from fact_m_xiaos_sum a 
      join dm_shop_bak s on s.key_shop=a.key_shop
      where 1=1 and iodate>=to_date('2013-06-01','yyyy-mm-dd') and iodate<=to_date('2013-10-31','yyyy-mm-dd')
      and a.key_nianf=12 and a.key_jij=5 
      group by a.key_xil

不加join dm_shop_bak s on s.key_shop=a.key_shop, 0.2秒,  加了就90多秒,  

fact_m_xiaos_sum是销售表, 80万行数据, key_shop是索引,  
dm_shop_bak是店铺表,  600行数据, key_shop是关键字段,

这条语句在SQL2005里执行是0.2秒

这是执行计划:


------解决方案--------------------
没有实际环境测试,你把dm_shop_bak放在前面试试。