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

oralce中procedure和sql语句优化的小问题,在线等
oracle

有三张表 
dep(dep_id number(2),dep_name varchar2(10));//部门号,部门名
emp(emp_id number(6),emp_name varchar2(20),dep_id number(2));//员工编号,员工名,部门编号
busi(emp_id number(6),busi_id number(10),busi_status char(2),busi_dateTime date,busi_desc 

varchar2(10))//员工编号 业余编号 业余状态 1正常 2 未生效 3 失效 4 删除,业务时间,业务描述

现问:
1 完成一个procedure,输入dep_id,输出此部门的员工数,并对此部门所有的员工的业余记录,按下面的条

件更新
busi_datetime 早于20010101 12:00:00的,busi_status置为 删除
busi_datetime早于20020101 12:00:00的,busi_status置为失效
busi_datetime在20020101 12:00:00 和20030101 12:00:00 之间的,busi_datetime的时间修改为原
busi_datetime+5天
2 业务量增加,表busi数据量急剧增加,每天增加20万数据,又删除此表的历史数据,10万,二个月后,
下面的sql执行效率极差,用什么方法可提高此sql的执行效率?
select emp_id,busi_id,busi_datetime,busi_desc from busi where emp_id=:valuel and 

busi_status=:value2

thanks..

------解决方案--------------------
emp_id 有索引?
看看select emp_id,busi_id,busi_datetime,busi_desc from busi where emp_id=:valuel and busi_status=:value2
执行计划