oracle index索引相關筆記
學習oracle的索引
1,索引的概念和分類
1,create index可以建立索引在如下幾種情況
1,表,分割槽表,索引組織表,或集表的一個或多個列
2,表或集表的一或多個標量型別的物件屬性上
1,經測在record型別不能用表型別
2,plsql表型別同上
3,nested 表的nested表列上
1,問題,其語法及注意點
4,官方文件
2,索引的型別
1,普通索引,預設即oracle建立的B樹索引
2,點陣圖索引,以點陣圖方式儲存與鍵值關連的rowid
3,分割槽索引,分割槽表中的分割槽表的索引列的每個值儲存一條記錄或叫條目
4,基於函式的索引,基於函式表示式.
5,域索引,與某個特定應用有關的索引型別的一個例項
6,?Oracle Database Concepts for a discussion of indexes 可以檢視關於索引的討論
問題
3,構建索引的前提條件
1,索引在自己的使用者下
2,對索引的表具有構建索引的物件許可權
3,必須有create any index系統許可權
4,為了建立域索引,還要具備在indextype上實行execute物件許可權
且先要建立indextype
5,為了建立基於函式的索引,這些函式必須宣告為deterministic
如果這些函式屬於另一個使用者,必須對其有execute的物件許可權
1,測試建立基於函式的索引
4,唯一索引unique
1,限制情況:
1,不能對點陣圖索引建立unique index
2,不能對域索引建立unique index
5,bitmap點陣圖索引
1,不是儲存每行的索引,而儲存每個不同鍵建立點陣圖索引
2,構建每個不同鍵值與rowid的關係
3,點陣圖中每個位元對應一個可能的rowid,如果配置了位元, 即對應rowid的記錄包含一個鍵值
4,這種表示適用於低強度的併發的應用,比如資料倉儲
5,在此索引上,會儲存索引列全為null在索引中,經測試null僅儲存一次
6,限制情況
1,不能在全域性分割槽索引上建立點陣圖索引
2,不能在一個索引組織表上建立點陣圖索引,除非索引組織表建立一個與它對映的表
3,點陣圖索引不能同時指定unique和bitmap
4, 域索引也不能指定bitmap
5,點陣圖索引最多有30列
6,問題:?Oracle Database Concepts and
Oracle Database Performance Tuning Guide for more information about using bitmap indexes
6,臨時表上可以建立索引,但作用時間範圍同於臨時表,基於會話和基於事務;
不能在臨時表上建立域索引
不能指定物理屬性和並行度及日誌和表空間
問題:要測試下臨時表上建立索引的情況
CREATE TABLE and Oracle Database Concepts for more information on temporary tables
7,索引列的限制情況
1,不能對使用者自定義型別,long,long raw,lob,ref建立索引
除非oracle支援在ref型別的列上建索引或者用scope子句定義的屬性
2,只有B樹即普通索引可以在加密列上建索引,且只能用於等值查詢
8,基於函式的索引的一些注意點
1,如果索引列為空,不會用基於函式的索引
create table t_unique(a int);--對其插入多條null記錄
create index t_unique_idx on t_unique(a,o);
--強制全表掃描成本是3
select /*+full(t_unique) */ * from t_unique where a is null
select * from t_unique where a is null
小結:有時強制直全表效能更差,全表的一致讀為8,而索引範圍掃描的一致性讀為2
2,where條件列順序與基於函式的列順序不同,也會使用基於函式的索引
3,如果基於函式的索引,其函式無效可刪除了。其索引會標記為disabled;
如果基於disabled的查詢就會失敗(前提是cbo選擇使用索引)
如果基於disabled的dml也會失敗,除非你把索引標記為unuable,把引數skip_unusable_indexes=true
2,索引測試,主要是不同索引的適用情況
3,索引與dml的關係
3,學習儲存過程中多個begin end程式碼塊與異常精確定位
4,測試如果在沒有備份表的情況下,truncate table,可否用logminer恢復資料
C:\Users\123>
sqlldr userid=scott/system control=c:\insert_batch.ctl log=c:\sqlloader_imp.log
1,索引的概念和分類
1,create index可以建立索引在如下幾種情況
1,表,分割槽表,索引組織表,或集表的一個或多個列
2,表或集表的一或多個標量型別的物件屬性上
1,經測在record型別不能用表型別
2,plsql表型別同上
3,nested 表的nested表列上
1,問題,其語法及注意點
4,官方文件
2,索引的型別
1,普通索引,預設即oracle建立的B樹索引
2,點陣圖索引,以點陣圖方式儲存與鍵值關連的rowid
3,分割槽索引,分割槽表中的分割槽表的索引列的每個值儲存一條記錄或叫條目
4,基於函式的索引,基於函式表示式.
5,域索引,與某個特定應用有關的索引型別的一個例項
6,?Oracle Database Concepts for a discussion of indexes 可以檢視關於索引的討論
問題
3,構建索引的前提條件
1,索引在自己的使用者下
2,對索引的表具有構建索引的物件許可權
3,必須有create any index系統許可權
4,為了建立域索引,還要具備在indextype上實行execute物件許可權
且先要建立indextype
5,為了建立基於函式的索引,這些函式必須宣告為deterministic
如果這些函式屬於另一個使用者,必須對其有execute的物件許可權
1,測試建立基於函式的索引
4,唯一索引unique
1,限制情況:
1,不能對點陣圖索引建立unique index
2,不能對域索引建立unique index
5,bitmap點陣圖索引
1,不是儲存每行的索引,而儲存每個不同鍵建立點陣圖索引
2,構建每個不同鍵值與rowid的關係
3,點陣圖中每個位元對應一個可能的rowid,如果配置了位元, 即對應rowid的記錄包含一個鍵值
4,這種表示適用於低強度的併發的應用,比如資料倉儲
5,在此索引上,會儲存索引列全為null在索引中,經測試null僅儲存一次
6,限制情況
1,不能在全域性分割槽索引上建立點陣圖索引
2,不能在一個索引組織表上建立點陣圖索引,除非索引組織表建立一個與它對映的表
3,點陣圖索引不能同時指定unique和bitmap
4, 域索引也不能指定bitmap
5,點陣圖索引最多有30列
6,問題:?Oracle Database Concepts and
Oracle Database Performance Tuning Guide for more information about using bitmap indexes
6,臨時表上可以建立索引,但作用時間範圍同於臨時表,基於會話和基於事務;
不能在臨時表上建立域索引
不能指定物理屬性和並行度及日誌和表空間
問題:要測試下臨時表上建立索引的情況
CREATE TABLE and Oracle Database Concepts for more information on temporary tables
7,索引列的限制情況
1,不能對使用者自定義型別,long,long raw,lob,ref建立索引
除非oracle支援在ref型別的列上建索引或者用scope子句定義的屬性
2,只有B樹即普通索引可以在加密列上建索引,且只能用於等值查詢
8,基於函式的索引的一些注意點
1,如果索引列為空,不會用基於函式的索引
create table t_unique(a int);--對其插入多條null記錄
create index t_unique_idx on t_unique(a,o);
--強制全表掃描成本是3
select /*+full(t_unique) */ * from t_unique where a is null
select * from t_unique where a is null
小結:有時強制直全表效能更差,全表的一致讀為8,而索引範圍掃描的一致性讀為2
2,where條件列順序與基於函式的列順序不同,也會使用基於函式的索引
3,如果基於函式的索引,其函式無效可刪除了。其索引會標記為disabled;
如果基於disabled的查詢就會失敗(前提是cbo選擇使用索引)
如果基於disabled的dml也會失敗,除非你把索引標記為unuable,把引數skip_unusable_indexes=true
2,索引測試,主要是不同索引的適用情況
3,索引與dml的關係
3,學習儲存過程中多個begin end程式碼塊與異常精確定位
4,測試如果在沒有備份表的情況下,truncate table,可否用logminer恢復資料
C:\Users\123>
sqlldr userid=scott/system control=c:\insert_batch.ctl log=c:\sqlloader_imp.log
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-755436/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle筆記 之 索引(index)Oracle筆記索引Index
- reverse index 反轉索引相關Index索引
- Oracle安裝Patch相關筆記Oracle筆記
- oracle相關內容索引Oracle索引
- oracle index索引原理OracleIndex索引
- 路由相關筆記路由筆記
- php相關筆記PHP筆記
- CUUG筆記 ORACLE索引學習筆記筆記Oracle索引
- docker相關概念筆記Docker筆記
- MSBUID相關(筆記)UI筆記
- iOS searchbar 相關筆記iOS筆記
- ASM相關概念(筆記)ASM筆記
- 關於轉儲Oracle索引資訊的相關命令Oracle索引
- Oracle索引分裂(Index Block Split)Oracle索引IndexBloC
- oracle index索引結構(一)OracleIndex索引
- oracle dml與索引index(一)Oracle索引Index
- mysql 索引相關MySql索引
- Windows API 程式相關筆記WindowsAPI筆記
- 【筆記】 sql_trace相關筆記SQL
- Kafka筆記系列-概念相關Kafka筆記
- oracle 點陣圖索引(bitmap index)Oracle索引Index
- oracle學習筆記——檢視、索引Oracle筆記索引
- Oracle - 約束、索引等相關常用操作語句Oracle索引
- oracle全文索引之STOPLIST_ CTXCAT 索引_INDEX SETOracle索引Index
- JDBC mysql 相關內容筆記JDBCMySql筆記
- 前端面試筆記 – js相關前端面試筆記JS
- Anaconda3相關筆記筆記
- 有關Oracle Index 的三個問題-索引也有好壞(轉)OracleIndex索引
- index索引Index索引
- 【INDEX】Oracle 索引常見知識梳理IndexOracle索引
- Oracle Index Key Compression索引壓縮OracleIndex索引
- INDEX 學習筆記Index筆記
- 說說MySQL索引相關MySql索引
- mysql相關內容索引MySql索引
- mini-lsm通關筆記-字元相關操作筆記字元
- oracle記憶體調整相關Oracle記憶體
- Dcat/laravel-admin 相關筆記Laravel筆記
- webpack4.x相關筆記整理Web筆記