分區表是大數據量環境下提升查詢效能、簡化維運 (如歸檔、清理) 的核心技術。本文提供生產級 RANGE 分區表完整 DDL:按月分區、各分區獨立表空間、全域主鍵索引、本地索引對應分區表空間,可直接參考調整部署。
CREATE TABLE t_mhdp (
id VARCHAR2(50) NOT NULL,
flt_aircode VARCHAR2(4),
flt_number NUMBER(7),
flt_date DATE
)
PARTITION BY RANGE (flt_date)
(
PARTITION part201105 VALUES LESS THAN (TO_DATE('2011-06-01','YYYY-MM-DD'))
TABLESPACE ts_mhdp_1105
PCTFREE 10 INITRANS 1 MAXTRANS 255
STORAGE (INITIAL 64K NEXT 1M MINEXTENTS 1 MAXEXTENTS UNLIMITED),
PARTITION part201106 VALUES LESS THAN (TO_DATE('2011-07-01','YYYY-MM-DD'))
TABLESPACE ts_mhdp_1106
PCTFREE 10 INITRANS 1 MAXTRANS 255
STORAGE (INITIAL 64K NEXT 1M MINEXTENTS 1 MAXEXTENTS UNLIMITED),
PARTITION part201107 VALUES LESS THAN (TO_DATE('2011-08-01','YYYY-MM-DD'))
TABLESPACE ts_mhdp_1107
PCTFREE 10 INITRANS 1 MAXTRANS 255
STORAGE (INITIAL 64K NEXT 1M MINEXTENTS 1 MAXEXTENTS UNLIMITED),
PARTITION part_default VALUES LESS THAN (MAXVALUE)
TABLESPACE ts_mhdp
PCTFREE 10 INITRANS 1 MAXTRANS 255
STORAGE (INITIAL 64K NEXT 1M MINEXTENTS 1 MAXEXTENTS UNLIMITED)
);
VALUES LESS THAN:上界**不包含**,下一分區起始值即為上一分區上界。MAXVALUE:兜底分區,收納超出所有定義邊界的資料,防止 ORA-14400 插入失敗。NLS_CALENDAR=GREGORIAN 為隱含預設,可省略。CREATE INDEX index_mhdp_pk ON t_mhdp(id)
TABLESPACE ts_index_mhdp
PCTFREE 10 INITRANS 2 MAXTRANS 255
STORAGE (INITIAL 64K NEXT 1M MINEXTENTS 1 MAXEXTENTS UNLIMITED);
UPDATE GLOBAL INDEXES 子句或事後重建。CREATE INDEX index_mhdp_pk ON t_mhdp(id) LOCAL
(
PARTITION part201105 TABLESPACE ts_mhdp_index_1105,
PARTITION part201106 TABLESPACE ts_mhdp_index_1106,
PARTITION part201107 TABLESPACE ts_mhdp_index_1107,
PARTITION part_default TABLESPACE ts_mhdp_index
);
| 場景 | 推薦索引類型 |
|---|---|
| 主鍵/唯一鍵 (分區鍵非前綴) | GLOBAL INDEX + UPDATE GLOBAL INDEXES |
| 主鍵包含分區鍵 (如 PK(id, flt_date)) | LOCAL INDEX (可建唯一) |
| 頻繁 TRUNCATE/DROP 舊分區 | LOCAL INDEX (免維護) |
| 跨分區範圍查詢為主 | GLOBAL INDEX (單掃描) |
| 分區裁剪查詢為主 | LOCAL INDEX (分區對齊) |
CREATE TABLE t_sales (...)
PARTITION BY RANGE (sale_date)
INTERVAL (NUMTOYMINTERVAL(1,'MONTH')) -- 自動建立月分區
(
PARTITION p_first VALUES LESS THAN (TO_DATE('2020-01-01','YYYY-MM-DD'))
TABLESPACE ts_sales_202001
);
免去手工 ADD PARTITION,適合持續增長的時間序列資料。