什麼是索引
索引是與表關聯的可選結構,是一種快速存取資料的途徑,可提高資料庫效能, 資料庫可以明確地建立索引, 以加快對錶執行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 允許使用者把一個表中的所有行分為 幾個部分, 並將這些部分儲存在不同的位置, 被分割區的表稱為分割區表, 分成的每個部分 稱為一個分割區
表分割區的優點
範例程式碼如下
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)
分割區的範圍
分割區方法包括範圍分割區, 雜湊分割區 , 列表分割區 , 複合分割區 , 間隔分割區 , 和虛擬列分割區,