首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

SUM速度慢解决方法

2013-10-11 
SUM速度慢select *from cj_record WITH(NOLOCK) WHERE order_no PD-20130823-0018检索出来的数据有7万

SUM速度慢
  select *
from cj_record WITH(NOLOCK) WHERE order_no = 'PD-20130823-0018'

检索出来的数据有7万多条,大概花了6到7秒完成

  select order_no,sum(period_time)
from cj_record WITH(NOLOCK) WHERE order_no = 'PD-20130823-0018'
group by order_no

而统计period_time这个数值则花掉6秒左右时间。

order_no字段为非集聚索引,cj_record大概有300万条记录。

请问各位大虾,如何才能优化数据库,使得统计数据更快!
谢谢了!

 
[解决办法]
初步判断应该是排序导致的,尝试:
方法1、在period_time和order_no上创建一个非聚集索引,即两列组合一个索引
方法2、把order_no改为聚集索引,不过这个方法通常都不可行。
另外给出执行计划看看。
[解决办法]
建OrderNo+Period_Time包含索引就OK
2008支持 OrderNo Include (Period_Time)
2005忘了是否支持
[解决办法]
在order_no字段的非集聚索引上include 入period_time列看看。
[解决办法]

建立索引,速度应该能提升:

create index idx_cj_record_op on cj_record(order_no,period_time)

[解决办法]
引用:
建立索引,速度应该能提升:

create index idx_cj_record_op on cj_record(order_no,period_time)


我比较支持2楼的做法,include索引

热点排行