前端時間,做某銀行的項目,需要用到分區表,之前從來沒有接觸過,特此去了解了一下。現在完成項目後,做一個總結,也希望能給你們帶來些許幫助。
首先,分區表和普通表大致上區別不大,僅多了一個分區的字段,以及分區範圍值。
以下就是我寫的一個分區表的案例:
CREATE TABLE ESS_TABLE_LOG
( SERIALNUM VARCHAR(30) NOT NULL,--流水號
USERID VARCHAR(10) NOT NULL,--用戶號
USERTYPE VARCHAR(1) NOT NULL,-用戶號類型
OPERATORNO VARCHAR(24) NOT NULL,--操作號
PHONENO VARCHAR(26) NOT NULL,--手機號
STATUS VARCHAR(2),--狀態
SHIPDATE DATE) --分區字段
PARTITION BY RANGE(SHIPDATE)
(STARTING MINVALUE, STARTING '11/1/2016' ENDING '12/31/2030' EVERY 1 MONTH, ENDING MAXVALUE);
(1)分區表的關鍵字PARTITION BY RANGE,這個是固定的語法,後面跟着的是分區字段,以及分區的範圍。
(2)這個分區表是按每月進行分區的,可根據 describe data partitions for table ESS_TABLE_LOG;查詢具體的分區情況。
(3)查詢匹配日期的分區數據:
select datapartitionnum(SHIPDATE) as PartitionId,
SHIPDATE,SERIALNUM ,USERID,USERTYPE,PHONENO from
ESS_TABLE_LOG where
SHIPDATE between '11/21/2016' and '11/22/2016' order by
SHIPDATE;
該分區表未設置索引,如果當數據量多大的時候,做刪除,性能會比較低,但是銀行根據腳本,批量執行,所有就沒加索引。有興趣的朋友可以再去深入瞭解下db2其他的分區表寫法及索引的添加。