索引 日常整理

看看哪些索引失效
select INDEX_NAME,STATUS from dba_indexes where STATUS<>'VALID';
status是N/A翻譯成中文表示 不適用
因爲dba_indexes.status只適用於非分區索引,如果是分區索引那麼status就是N/A
status是unusable的是失效的索引

查看執行計劃,看看有沒有跑索引
EXPLAIN PLAN FOR SELECT * FROM DAVE;
set linesize 120
set pagesize 999
select * from table(dbms_xplan.display);
執行順序:最裏面最先執行。同一層次,從上到下順序執行。
rows表示執行該步驟後返回的記錄數。
bytes表示執行該步驟後返回的字節數=rows*avg_line_length
cost表示執行到該步驟的累計成本

表分析,也會分析索引,獲取分析數據
begin
dbms_stats.gather_table_stats(OWNNAME          => 'boss_crm',
                                  TABNAME          => 'biz_product_serv',
                                  ESTIMATE_PERCENT => 30,
                                  METHOD_OPT       => 'FOR ALL INDEXED COLUMNS',
                                  degree           => 4,
                                  cascade          => true);
end;
/

索引分析
begin
dbms_stats.GATHER_INDEX_STATS(OWNNAME          => 'vcmp',
                              INDNAME          => 'C_INVOICE_USERID',
                              ESTIMATE_PERCENT => 10,
                              degree           => 4);
end;
/

分區索引分析
begin
dbms_stats.GATHER_INDEX_STATS(OWNNAME          => 'BOSS_CRM',
                              INDNAME          => 'SYS_IL0000085077C00017$$',
                              GRANULARITY => 'all',
                              ESTIMATE_PERCENT => 30,
                              degree           => 4);
end;
/
但是分區索引分析完也看不到最後分析時間,老萬說正常

ps:以下內容未經測試,只是上網的總結和霞姐的話




如何重建索引
      a) 查看索引類型
select  t1.index_name,t1.partitioned from Dba_Indexes t1  
         where t1.Table_Name=upper('CCB_COGNOS_PROD_BALANCE_AA') 
索引名稱                         是否分區索引  
GNOS_PROD_BALANCE_AA_N1      NO 
b)非分區索引
重建索引:alter index   cin.CCB_COGNOS_PROD_BALANCE_AA_N1          rebuild Nologging 
c)分區索引
          找出失效的分區索引:
select t.Index_Name, t.Partition_Name, t.Tablespace_Name, t.Status  
    from Dba_Ind_Partitions t  
   where t.Index_Name = 'CMZ_LOCAL_IDX_2'   

重建所有狀態爲unusable的索引
ALTER INDEX 索引名  
             REBUILD PARTITION 分區名  
             TABLESPACE 表空間名  
             NOLOGGING   




看看是不是失效了索引
select index_name,status from dba_indexes where Index_Name = 'EQUIPSTR_SERIALNO_IDX' 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章