程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> Oracle數據庫中索引的相關的維護步驟介紹

Oracle數據庫中索引的相關的維護步驟介紹

編輯:Oracle數據庫基礎

以下的文章主要是介紹Oracle數據庫中索引的相關的維護,如果你對這Oracle數據庫中索引的相關的維護的實際操作與應用,心存好奇的話,以下的文章將會揭開它的神秘面紗。望你浏覽之後會有所收獲。

索引的選擇性=索引裡不同關鍵字的數目/表中行的總數:

  1. select i.distinct_keys/t.num_rows  
  2. from  
  3. user_indexes i,  
  4. user_tables t  
  5. where i.table_name='表名' 
  6. and i.index_name='索引名' 
  7. and i.table_name=t.table_name  
  8. /  

可以查詢USER_TAB_COLUMNS以了解每個列的選擇性

表中所有行在該列的不同值的數目:

  1. select  
  2. column_name,  
  3. num_distinct  
  4. from user_tab_columns  
  5. where table_name='表名' 
  6. /  

列的選擇性=NUM_DISTINCT/表中所有行的總數,查詢USER_TAB_COLUMNS有助測量每個列的選擇性,但它並不能精確地測量列的並置組合的選擇性。要想測量一組列的選擇性,需要采用手工方法或者根據這組列創建一個索引並重新分析表。

確定索引的實際碎片

隨著數據庫的使用,不可避免地對基本表進行插入,更新和刪除,這樣導致葉子行在索引中被刪除,使該索引產生碎片。插入刪除越頻繁的表,索引碎片的程度也越高。碎片的產生使訪問和使用該索引的I/O成本增加。碎片較高的索引必須重建以保持最佳性能。

(1)利用驗證索引命令對索引進行驗證。

這將有價值的索引信息填入index_stats表。

  1. validate index 用戶名.索引名  
  2. /  

(2)查詢index_stats表以確定索引中刪除的、未填滿的葉子行的百分比。

  1. select  
  2. name,  
  3. del_lf_rows,  
  4. lf_rows,  
  5. round((del_lf_rows/(lf_rows+0.0000000001))*100) "Frag Percent"  
  6. from index_stats  
  7. /  

(3)如果索引的葉子行的碎片超過10%,考慮對索引進行重建。

  1. alter index 用戶名.索引名 rebuild  
  2. tablespace 表空間名  
  3. storage(initial 初始值 next 擴展值)  
  4. nologging  
  5. /  

(4)如果出於空間或其他考慮,不能重建索引,可以整理索引。

  1. alter index用戶名.索引名 coalesce  
  2. /  

(5)清除分析信息

  1. analyze index 用戶名.索引名  
  2. delete statistics  
  3. /  

上述的相關內容就是對Oracle數據庫中索引的維護的相關項目的描述,希望會給你帶來一些幫助在此方面。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved