| 版本 | 關鍵分區功能 |
|---|---|
| 8.0.5 | Range 分區 |
| 8i | Hash 分區、Composite Range-Hash |
| 9i | List 分區、Composite Range-List |
| 10g | 索引組織表分區、更多複合分區組合 |
| 11g | Interval、Reference、Virtual Column、Partition Advisor |
自動建立等寬範圍分區,無需預先定義所有分區:
CREATE TABLE sales_part (
time_id NUMBER,
region_id NUMBER,
order_id NUMBER,
order_date DATE,
sales_qty NUMBER(10,2),
sales_amount NUMBER(12,2)
)
PARTITION BY RANGE (order_date)
INTERVAL (NUMTOYMINTERVAL(1, 'month'))
(PARTITION p_first VALUES LESS THAN ('01-JAN-2006'));
ALTER TABLE SET INTERVAL 轉換NUMTOYMINTERVAL 或 NUMTODSINTERVAL明細表透過 PK-FK 關係自動繼承主表分區策略,無需在明細表儲存分區鍵:
CREATE TABLE orders (
order_id NUMBER PRIMARY KEY,
order_date DATE
) PARTITION BY RANGE (order_date) ...;
CREATE TABLE order_items (
item_id NUMBER,
order_id NUMBER REFERENCES orders(order_id)
) PARTITION BY REFERENCE (orders_fk);
優點:維護簡單、Join 效能最佳(Partition-wise Join)、避免資料重複。
虛擬欄位僅存元資料,不佔儲存空間:
CREATE TABLE accounts (
acc_no NUMBER(10) NOT NULL,
acc_name VARCHAR2(50) NOT NULL,
acc_loc VARCHAR2(5),
acc_branch NUMBER(2) GENERATED ALWAYS AS (TO_NUMBER(SUBSTR(TO_CHAR(acc_no),1,2)))
)
PARTITION BY LIST (acc_branch);
應用:從帳號前兩碼自動推導分行代碼分區,無需觸發器維護。