資料庫索引(Oracle )

2021-09-25 21:25:27 字數 2461 閱讀 9344

索引的建立一般規則

單錶索引不超過6個。

每個索引不超過3個字段。

索引匹配時,可以包含關係,但指令碼中的字段在索引的前面的連續欄位時,正常索引,否則會變成skip索引(索引效能下降70%),如sql條件裡有c1,c3欄位,如果索引是c1, c2,c3,則是 skip index,如果是c1,c3,c2,則是正常索引。

唯一性索引有可能會影響到查詢效能,主要是統計資訊處理導致指令碼不去用更優化的索引,而是用唯一索引。可以考慮用採隱藏索引技術。

指令碼實現的時候,索引可選擇性高的條件放在條件語句的前面,可以提高指令碼效能。

索引單獨表空間,儲存在一起時,效果不大,需要在不同的儲存裝置上。

函式索引(to_date)並不能提公升效率,要從索引使用上分析。

可以根據歷史統計資訊查詢索引使用的次數,並分析索引合理性,可以監控索引使用情況(會影響效能)。

查索引選擇性:

10. 統計資訊收集與索引重建統計資訊自動收集,資料量變化超過 20%自動,定時收集。

--收集單錶的統計資訊

call dbms_stats.gather_table_stats(user, '表名');
--收集整個schema的統計資訊

call dbms_stats.gather_schema_stats(user);
--普通索引重建

select 'alter index ' || index_name || ' rebuilding on line

;', t.*  from   user_indexes t

where  t.temporary = 'n' and

index_type = 'normal' and

t.partitioned = 'no';

11. 如何判斷索引是否使用

select *

from   dba_indexes

where  (owner, index_name) not in

(select object_owner, object_name

from   dba_hist_sql_plan) ;

12. 隱藏索引

alter index 索引名  invisible / visible;
13. 表的高水位

分配的表空間

select segment_name, segment_type, blocks  from dba_segments

where segment_name=』ttrd_accounting_secu_obj_his』;

使用表空間   

select table_name,num_rows,blocks,empty_blocks

from user_tables

where table_name=' ttrd_accounting_secu_obj_his '

當插入了資料以後,高水位線就會**,但是這裡也有乙個特性,就是如果你採用 delete 語句刪除資料的話,資料雖然被刪除了,但是高水位線卻沒有降低。select 語句掃瞄的資料塊增加。    降低方法:

truncate    執行表重建指令 alter table table_name move;

alter table table_name shrink space;
重建表    匯出/匯入表

alter   table  table_name  deallocate   unused;

Oracle資料庫索引

標籤 資料庫 oracle 索引index 2013 06 14 16 54 4148人閱讀收藏 舉報 database 6 目錄 索引基本概念 索引的作用 索引的架構 oracle索引的型別 1 基於函式的索引 2 位圖索引 oracle索引的實現 索引是用於加速資料訪問的資料物件,合理的使用索引...

Oracle資料庫 索引

索引通過指標的形式提高資料查詢的速度。如果乙個資料量比較大的資料庫經常被查詢而插入刪除的次數較少,則應該建立索引,相反,小表或經常被插入或修改,則不建議建立索引。1.建立索引 create index emp phone number ix on employees phone number 2.建...

Oracle資料庫 索引

索引是定義在儲存表基礎之上,有助於無需檢查所有記錄而快速定位所需記錄的一種輔助儲存結構,由一系列儲存在磁碟上的索引項 index entries 組成,每個索引項又由兩部分構成 索引字段 由table中某些列 通常是一列 中的值串接而成,索引中通常儲存了索引欄位的每乙個值 也有例外 索引字段類似於詞...