注册
更新统计信息
专栏/技术分享/ 文章详情 /

更新统计信息

晚安 2025/11/21 111 0 0
摘要
declare --更新所有列的统计信息
v_sql varchar(4000);
v_begtime VARCHAR2(200);
v_endtime varchar2(200);
CURSOR c1 IS SELECT
        TAB.NAME                                             AS TABLE_NAME ,
        SYSCOL.NAME                                          AS COLUMN_NAME,
        SCH.NAME as sch_name
FROM
        SYSOBJECTS AS TAB,
        SYSOBJECTS AS SCH,
        SYSCOLUMNS AS SYSCOL
WHERE
        SCH.ID =TAB.SCHID
    AND TAB.ID =SYSCOL.ID
    --AND SCH.NAME = 'SYSDBA'
    AND SYSCOL.TYPE$ NOT IN ('BLOB','CLOB','TEXT')
    and TAB.NAME  IN(select  TABLE_NAME  from   ALL_TABLES WHERE TABLE_NAME = 'CHRONIC_LABEL_GRADE_DICT');
 begin
  for i in c1 
  loop
      v_sql :='stat 100 on "'||i.sch_name||'"."'|| i.TABLE_NAME ||'"("' ||i.COLUMN_NAME ||'");';
      --v_sql='stat 100 on SP_TS_BAKSET_REMOVE_BATCH(DEVICE_TYPE);';
  print v_sql;
  v_begtime := sysdate();
  execute immediate v_sql;
  v_endtime :=sysdate();
  --insert into stat_history VALUES (v_begtime,v_endtime,v_sql,i.TABLE_NAME,i.COLUMN_NAME);
  commit;
  end loop;
end;
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服