oracle的逆序鍵索引應用!
首先得明確索引都是有序排列的。
而反向索引最大的用處是用在叢集環境中的。試想這樣一種情況,一個插入非常頻繁的表A,在列ID存在一個索引INDEX_A_ID,假如索引的生成順序是每次插入加1。如:
123
124
125
那麼這幾個索引鍵值非常非常大的可能是儲存在一個資料塊上的,而在叢集環境中,資料塊需要申請DLM鎖來進行資料塊的傳遞。
這樣的話,問題就出來了,對於插入非常頻繁的表,如果存在類似的索引,資料塊在叢集間的傳遞就非常頻繁,這樣的話肯定影響效能。
如果是反轉索引的話,情況就明顯不一樣了,以上面的例子來說,翻轉後,鍵值的順序是:
321
421
521
這幾個鍵值存在一個資料塊的可能性大大降低了。因此資料塊的在叢集間的傳遞爭用就會消失。我現在所維護的雙節點RAC,前段時間有幾個索引一直出現在AWR中(哪個部分我忘了,記不清了),就是因為上面的情況,建立了反轉索引後,徹底消失了。
但反向鍵索引也有它侷限性:如果在WHERE語句中,需要對索引列的值進行範圍性的搜尋,如BETWEEN、等,其反向鍵索引無法使用,這個時候,Oracle將執行全表掃描;只有對反向鍵索引列進行 <> 和 = 的比較操作時,其反向鍵索引才會得到使用。
而反向索引最大的用處是用在叢集環境中的。試想這樣一種情況,一個插入非常頻繁的表A,在列ID存在一個索引INDEX_A_ID,假如索引的生成順序是每次插入加1。如:
123
124
125
那麼這幾個索引鍵值非常非常大的可能是儲存在一個資料塊上的,而在叢集環境中,資料塊需要申請DLM鎖來進行資料塊的傳遞。
這樣的話,問題就出來了,對於插入非常頻繁的表,如果存在類似的索引,資料塊在叢集間的傳遞就非常頻繁,這樣的話肯定影響效能。
如果是反轉索引的話,情況就明顯不一樣了,以上面的例子來說,翻轉後,鍵值的順序是:
321
421
521
這幾個鍵值存在一個資料塊的可能性大大降低了。因此資料塊的在叢集間的傳遞爭用就會消失。我現在所維護的雙節點RAC,前段時間有幾個索引一直出現在AWR中(哪個部分我忘了,記不清了),就是因為上面的情況,建立了反轉索引後,徹底消失了。
但反向鍵索引也有它侷限性:如果在WHERE語句中,需要對索引列的值進行範圍性的搜尋,如BETWEEN、等,其反向鍵索引無法使用,這個時候,Oracle將執行全表掃描;只有對反向鍵索引列進行 <> 和 = 的比較操作時,其反向鍵索引才會得到使用。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22034023/viewspace-662246/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 索引在ORACLE中的應用分析索引Oracle
- oracle之 反向鍵索引Oracle索引
- Oracle刪除主鍵保留索引的方法Oracle索引
- Oracle主鍵、唯一鍵與唯一索引的區別Oracle索引
- SqlServer索引的原理與應用SQLServer索引
- 【Oracle】-【move】【索引】無資料的主鍵索引VALID還是UNUSABLEOracle索引
- 索引的應用規律總結索引
- SAP Fiori應用索引大全索引
- oracle全文索引之幾個關鍵表Oracle索引
- Oracle 外來鍵索引影響阻塞問題Oracle索引
- InnoDB關鍵特性之自適應hash索引索引
- 主鍵索引 (聚集索引) 和普通索引 (輔助索引) 的區別索引
- Oracle主鍵約束、唯一鍵約束、唯一索引的區別(轉)Oracle索引
- 降序索引應用在Top N問題上的應用索引
- 主鍵與主鍵索引的關係索引
- oracle的索引Oracle索引
- Oracle開發:構建強大企業級應用的關鍵Oracle
- MySQL索引理解和應用MySql索引
- PostgreSQLGIN單列聚集索引應用SQL索引
- ORACLE 命令的應用Oracle
- oracle查詢表資訊(索引,外來鍵,列等)Oracle索引
- 6. Oracle開發和應用—6.5. 常用物件—6.5.2. 索引Oracle物件索引
- 主鍵local索引、unique local索引、分割槽索引順序的理解索引
- Java在量化投資等金融業的關鍵應用舉例 - oracleJavaOracle
- ORACLE: 查詢(看)表的主鍵、外來鍵、唯一性約束和索引Oracle索引
- 常數複合索引應用案例索引
- ORACLE索引的管理Oracle索引
- oracle之profile的應用Oracle
- oracle之 profile的應用Oracle
- 索引@oracle索引技術索引Oracle
- oracle外來鍵索引解決父表鎖定問題Oracle索引
- oracle檢視當前使用者下所有外來鍵、主鍵、索引、sequence的建立語句Oracle索引
- 清理Oracle中無用索引改善DML效能Oracle索引
- 清除Oracle中無用索引 改善DML效能Oracle索引
- 清除Oracle中無用索引,改善DML效能Oracle索引
- 逆序排列
- MySQL全文索引應用簡明教程MySql索引
- MySQL 全文索引應用簡明教程MySql索引