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

那位大侠优化一下这个sql语句,耗时57分钟啊解决办法

2012-02-28 
那位大侠优化一下这个sql语句,耗时57分钟啊...表check_serv_group_price字段如下,约有10万条记录SERV_IDNU

那位大侠优化一下这个sql语句,耗时57分钟啊...
表check_serv_group_price字段如下,约有10万条记录
SERV_IDNUMBER(12)
PRICING_PLAN_IDNUMBER(9)
SERV_GROUP_IDNUMBER(12)
MIN_SERV_IDNUMBER(12)

表里多个serv_id对应同一个serv_group_id,更新字段min_serv_id为同一个serv_group_id中最小的serv_id.
update   check_serv_group_price   a
      set   min_serv_id   =   (select   min(serv_id)
                                                from   check_serv_group_price
                                              where   a.serv_group_id   =   serv_group_id);
这个耗时57分钟,有什么具体办法(比如加索引什么的)可以提高这个语句的速度,或者用什么别的语句提高速度?

[解决办法]
建一张临时表
create table temp as
select serv_group_id,min(serv_id) m_servid
from check_serv_group_price
group by serv_group_id;

然后建索引
然后更新
update check_serv_group_price a
set min_serv_id=(select b.m_servid from temp b where a.serv_group_id=b.serv_group_id)
[解决办法]
在关联查询的字段serv_group_id上建立索引:

CREATE INDEX ix_serv_group_id
ON check_serv_group_price (serv_group_id);

热点排行
Bad Request.