索引相關知識回顧
分割槽索引和全域性索引:
分割槽索引就是在所有每個區上單獨建立索引,它能自動維護,在drop或truncate某個分割槽時不影響該索引的其他分割槽索引的使用,也就是索引不會失效,維護起來比較方便,但是在查詢效能稍微有點影響。
create index idx_ta_c2 on ta(c2) local (partition p1,partition p2,partition p3,partition p4);
或者 create index idx_ta_c2 on ta(c2) local ;
另外在create unique index idx_ta_c2 on ta(c2) local ;系統會報ORA-14039錯誤,這是因為ta表的分割槽列是c1,oracle不支援在分割槽表上建立PK主鍵或時主鍵列不包含分割槽列,建立唯一約束也不可以這樣。
全域性索引就是在全表上建立索引,它可以建立自己的分割槽,可以和分割槽表的分割槽不一樣,也就是它是獨立的索引。
在drop或truncate某個分割槽時需要建立索引alter index idx_xx rebuild,也可以通過alter table table_name drop partition partition_name update global indexes;實現,但是如果資料量很大則要花很長時間在重建索引上。
可以通過查詢user_indexes、user_part_indexes和user_ind_partitions檢視來檢視索引是否有效。
create index idx_ta_c3 on ta(c3);
或者把全域性索引分成多個區(注意和分割槽表的分割槽不一樣):
create index idx_ta_c4 on ta(c4) global partition by range(c4)(partition ip1 values less than(10000),partition ip2 values less than(20000),partition ip3 values less than(maxvalue));
注意全域性索引上的引導列要和range後列一致,否則會有ORA-14038錯誤。如不能這樣寫:create index idx_ta_c4 on ta(c1) global partition by range(c4)(partition ip1 values less than(10000),partition ip2 values less than(20000),partition ip3 values less than(maxvalue));
oracle會對主鍵自動建立全域性索引
如果想使某個分割槽索引置為不可用則可以用如下指令碼:
alter index idx_tab1 modify partition "ind partition name" unusable
如果想在主鍵的列上建立分割槽索引,除非主鍵包括分割槽鍵,還有就是主鍵建在兩個或以上列上,否則不能建立。
在頻繁刪除表的分割槽且資料更新比較頻繁時為了維護方便要避免使用全域性索引。
索引監控:
另外,oracle表上的索引應該都是有用的索引,也就是都能被查詢所用。如果某個索引不能被查詢使用,則應該刪除它,oracle提供了一個很好的監控索引的方法:
啟用索引監控的方法如下:
alter index inx_org_id monitoring usage;
啟用監控後,我們可以檢視v$objec_usage檢視。該檢視裡記錄了那些啟用了監控的索引資訊,其中,index_name欄位說明被監控索引的名稱;used欄位說明在監控的時間段裡是否被使用過:select index_name,table_name,monitoring,used from v$object_usage;
INDEX_NAME TABLE_NAME MON USE
----------------------- --------------------- ------------ ---------
INX_ORG_ID RES_ORG YES NO
select count(*) from reg_org where org_id = 43000600;
COUNT(*)
---------------
0
select index_name,table_name,monitoring,used from v$object_usage;
INDEX_NAME TABLE_NAME MON USE
----------------------- --------------------- ------------ ---------
INX_ORG_ID RES_ORG YES YES
當我們發出一句where org_id=43000600的查詢語句後,該索引的used的值從NO變成YES了。因為org_id欄位上存在一個索引,並且被使用到了。
alter index idx_org_id nomonitoring usage;
關閉索引監控。
索引以及表的分割槽的相關檢視,以及分割槽的匯入匯出:
匯出子分割槽:exp test1/test1 tables=ta:p1 file=part_1.dmp
分割槽管理用到的檢視:
user_tab_partitions,
user_part_indexes,
user_part_tables,
user_partial_drop_tabs,
user_part_indexes
user_part_key_columns
========================
查詢分割槽表:select * from hcl partition(p_200809)
匯出分割槽表:exp username/pwd file=/aa.dmp tables=(hcl:p_200809,hcl:p_200810);
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12129601/viewspace-746901/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 計算機相關知識的小小科普回顧計算機
- 回顧maven專案的spring boot相關知識點MavenSpring Boot
- 提問式複習:圖文回顧 redo log 相關知識
- javascript知識回顧JavaScript
- flex知識回顧Flex
- 面試小知識:MySQL索引相關面試MySql索引
- MySQL學習總結:提問式回顧 undo log 相關知識MySql
- 關於this指標指向的知識回顧指標
- openLayers 3知識回顧
- 串知識的重新回顧
- java學習知識回顧Java
- Java基礎知識回顧Java
- Java基礎知識回顧 -SQLJavaSQL
- 錯題知識點回顧1
- 【輕知識】phper回顧下jqueryPHPjQuery
- Kafka基本知識回顧及複製Kafka
- Android 知識點回顧之 FragmentAndroidFragment
- Shell相關知識
- .net相關知識
- mobile相關知識
- rollback相關知識
- Azure Data Factory(九)基礎知識回顧
- Android知識點回顧之Intent/IntentFilterAndroidIntentFilter
- Android知識點回顧之LoaderAndroid
- 音訊相關知識音訊
- Elasticsearch——search相關知識Elasticsearch
- Git相關知識點Git
- SSL相關知識科普
- Redis的相關知識Redis
- redis相關知識點Redis
- RPM相關知識
- 直播相關知識收集
- shell相關知識點
- 證書相關知識
- 網路相關知識
- Oracle 相關知識點Oracle
- oracle awr相關知識Oracle
- nohup使用相關知識