当前位置: 代码迷 >> Sql Server >> 关于分区表查询有关问题,求指点
  详细解决方案

关于分区表查询有关问题,求指点

热度:22   发布时间:2016-04-24 10:32:31.0
关于分区表查询问题,求指点
本帖最后由 niuhejun 于 2014-05-14 18:11:08 编辑

一个物流订单表。里面有以下字段:
“单号”
“收货时间”
“物流公司”
“放款时间”
“订单状态”
...

1.分区字段是订单的“收货时间”

2.一个季度一个分区,现在大约是30多个分区

3.聚集索引:(收货时间,物流公司)

4.主键:收货时间、单号、物流公司

5.表数据在4000W左右
6.每个分区大约在300-800W数据上不等
操作:
1.针对常用的字段建立了单个索引
2.针对查询比较慢,且使用频繁的SQL语句建立了复合索引。
3.索引总共10个

难点:

1.当按照收货时间及其物流公司检索一部分数据,并按照天和物流进行分组的时候,速度最快也得16秒多
2.按照放款时间、物流公司、及其状态来检索的时候,速度一度在40秒多徘徊
3.以上两个查询都对其查询条件做了复合索引,以上两组查询都有排序和分组动作,
4.例句:
select A_Unit,sum(A_HK) as hk,Convert(varchar(10),A_Fkdate,120) as fkdate from Automatic_All where 
A_Fkdate>='2013-11-14' and A_HK>0 and A_State>=12  and A_Unit  in('申通',"圆通",......) 
group by  A_Unit,Convert(varchar(10),A_Fkdate,120) order by fkdate 

select A_Unit,sum(A_HK) as hk,Convert(varchar(10),A_Shdate,120) as shdate from Automatic_All where 
A_Shdate>='2013-11-14' and A_HK>0   and A_Unit in ('申通','圆通,...)  
group by  A_Unit,Convert(varchar(10),A_Shdate,120) order by shdate

1.第一次用表分区,网上看到聚合索引推荐要和分区字段一起。所以就照着建了,其他的索引都是按照普通表来建立的
表分区的索引,检索等有什么技巧,有哪些要注意的吗?
2.我上边的检索为什么会特别慢呢。
3,我个人调试发现,只有把条件A_Unit  in('申通',"圆通",......)  改为A_Unit=“XXX” 才能把查询时间控制在5秒以内,基本在两秒左右

求指点,实在不会优化了,2013-11-14到现在数据大约在800W左右

------解决方案--------------------
 A_State   A_Unit   A_Fkdate   都建非聚合索引试试
  相关解决方案