深入oracle磁區索引
什么是索引
索引是與表關聯的可選結構,是一種快速訪問資料的途徑,可提高資料庫性能, 資料庫可以明確地創建索引, 以加快對表執行SQL 陳述句的速度 當索引鍵作為查詢條件時 該索引將直接指向包含這些值的行的位置,即便洗掉索引 也無需修改任何sql陳述句的定義.
索引的分類
| 物理分類 | 邏輯分類 |
|---|---|
| 磁區或非磁區索引 | 單列和組合索引 |
| B樹索引(標準索引) | 唯一或非唯一索引 |
| 正常或反向鍵索 | 基于函式索引 |
| 位圖索引 |
如以下示例代碼
1.唯一索引
CREATE UNIQUE INDEX index_unique_id ON customers(customer_id );
2.反向鍵索引
CREATE UNIQUE INDEX index_reverse_id ON customers(customer_id )REVERSE;
3.位圖索引
CREATE BITMAP INDEX index_bit_territory ON customers (nls_territory )
4.大寫函式索引
CREATE INDEX index_name ON customers(UPPER (cust_first_name))
5.洗掉索引
DROP INDEX index_bit_job;
6.重復索引
ALTER INDEX index_reverse_empno REBUILD NOREVERSE;
表的磁區
什么是表磁區
Oracle 允許用戶把一個表中的所有行分為 幾個部分, 并將這些部分存盤在不同的位置, 被磁區的表稱為磁區表, 分成的每個部分 稱為一個磁區
表磁區的優點
- 改善表的查詢性能, 在對表進行磁區后, 用戶執行SQL查詢時可以只訪問表中的特定磁區而非整個表
- 表更容易管理, 因為磁區表的資料存盤在多個部分中, 按磁區加載和洗掉資料比在表中加載和洗掉更容易
- 便于備份和恢復, 可以獨立的備份和和恢復每個磁區
- 提高資料庫的安全性,將不同的磁區分布在不同的磁盤, 可以減小所有磁區的資料同時損壞的可能性
實體代碼如下
create table rangeorders(
order_id NUMBER(12) primary key,
order_date DATE NOT NULL,
order_mode VARCHAR2(8),
customer_id NUMBER(6) NOT NULL,
order_status NUMBER(2),
order_total NUMBER(8,2),
sales_rep_id NUMBER(6),
promtion_id NUMBER(6)
)
PARTITION BY RANGE (order_date)(
PARTITION p1 values LESS THAN (TO_DATE('2005/01/01','yyyy/mm/dd')),
PARTITION p2 values LESS THAN (TO_DATE('2006/01/01','yyyy/mm/dd')),
PARTITION p3 values LESS THAN (TO_DATE('2007/01/01','yyyy/mm/dd')),
PARTITION p4 values LESS THAN (TO_DATE('2008/01/01','yyyy/mm/dd')),
PARTITION p5 values LESS THAN (TO_DATE('2009/01/01','yyyy/mm/dd')),
PARTITION p6 values LESS THAN (MAXVALUE)
)
查看05年度的資料
SELECT * FROM rangeorders PARTITION(P1)
磁區的范圍
磁區方法包括范圍磁區, 散列磁區 , 串列磁區 , 復合磁區 , 間隔磁區 , 和虛擬列磁區,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/142082.html
標籤:其他
