oracle 查询语句索引建议

--创建任务
DECLARE
   my_task_name VARCHAR2(30);
   my_sqltext   CLOB;
 BEGIN
   my_sqltext := 'SELECT ID_CODE,ID_NAME    
  FROM VIDS.TRACE_OFFLINE_hist T
  WHERE 1            =1
  AND LOGOUT_AT     >= to_date(''2013-08-14 00:00:00'',''yyyy-mm-dd hh24:mi:ss'')
  AND LOGOUT_AT     <= to_date(''2013-08-25 23:59:00'',''yyyy-mm-dd hh24:mi:ss '')
  AND T.ID_TYPE      = 2
  AND T.RID_YEAR    <= 2003
  AND T.RID_YEAR    >= 1978 
  AND T.RID_SEX      = 1
  AND ((1=1
  AND (T.AREA_CODE  IN(''310105'')
  OR T.SERVICE_CODE IN(''31010421020167'',''31010421140033''))))
  AND NOT EXISTS
    (SELECT 1
    FROM VIDS.TRACE_OFFLINE_hist S7
    WHERE 1             =1
    AND LOGOUT_AT      >= to_date(''2013-08-24 00:00:00'',''yyyy-mm-dd hh24:mi:ss'')
    AND LOGOUT_AT      <= to_date(''2013-08-30 23:59:00'',''yyyy-mm-dd hh24:mi:ss '')
    AND S7.ID_TYPE      = 2
    AND S7.RID_YEAR    <= 2003
    AND S7.RID_YEAR    >= 1978
    AND S7.RID_SEX      = 1
    AND ((1=1
    AND (S7.AREA_CODE  IN(''310105'')
    OR S7.SERVICE_CODE IN(''31010421020167'',''31010421140033''))))
    AND T.ID_CODE       = S7.ID_CODE
    )';
   my_task_name := DBMS_SQLTUNE.CREATE_TUNING_TASK(
           sql_text    => my_sqltext,
           user_name   => 'VIDS',   --注意是大写,不然会报错,用户无效
           scope       => 'COMPREHENSIVE',
          time_limit  => 60,
          task_name   => 'tuning_sql_test',
          description => 'Task to tune a query on a specified table');


  DBMS_SQLTUNE.EXECUTE_TUNING_TASK( task_name => 'tuning_sql_test');
END;
/


--执行任务

exec dbms_sqltune.execute_tuning_task('tuning_sql_test');

--删除任务

exec dbms_sqltune.drop_tuning_task('tuning_sql_test');


--检查优化任务的状态
SELECT task_name,status FROM USER_ADVISOR_TASKS WHERE task_name ='tuning_sql_test';


--查看优化结果
 SET LONG 999999
 set serveroutput on size 999999
 SET LINESIZE 100
 

 SELECT DBMS_SQLTUNE.REPORT_TUNING_TASK( 'tuning_sql_test') from DUAL;



该方法与db2advis有相同作用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值