標籤:tick oracle資料庫 operation let ble 匯入 select val 操作
表分區是一種思想,分區表示一種技術實現。當表的大小過G的時候可以考慮進行表分區,提高查詢效率,均衡IO。oracle分區表是oracle資料庫提供的一種表分區的實現形式。表進行分區後,邏輯上仍然是一張表,原來的查詢SQL同樣生效,同時可以採用使用分區查詢來最佳化SQL查詢效率,不至於每次都掃描整個表。
根據年: INTERVAL(NUMTOYMINTERVAL(1,‘YEAR‘))
根據月: INTERVAL(NUMTOYMINTERVAL(1,‘MONTH‘))
根據天: INTERVAL(NUMTODSINTERVAL(1,‘DAY‘))
根據時分秒: NUMTODSINTERVAL( n, { ‘DAY‘|‘HOUR‘|‘MINUTE‘|‘SECOND‘})
此時已經有普通表了,我建立了含相同欄位的分區表,把資料匯入到分區表中,再把原表刪掉。
-- Create table(WMS_OPERATION_RECORD)create table DPHOMEWMS.WMS_OPERATION_RECORD_TMP( ID NUMBER(19) not null, WAREHOUSE_ID NUMBER(19), ASN_ID NUMBER(19), PICK_TICKET_ID NUMBER(19), RELATION_CODE VARCHAR2(50), OPERATION_TYPE VARCHAR2(50), OPERATION_ID NUMBER(19), OPERATION_NAME VARCHAR2(50 CHAR), OPERATION_TIME TIMESTAMP(6), STATUS VARCHAR2(10), TYPE VARCHAR2(10), COUNTS NUMBER(10))tablespace DPHOMEWMS_DATAPARTITION BY RANGE (OPERATION_TIME) interval (numtoyminterval(1, ‘month‘)) STORE IN (DPHOMEWMS_DATA) ( partition OPERATION_RECORD_P01 values less than (TIMESTAMP‘ 2017-05-08 00:00:00‘) tablespace DPHOMEWMS_DATA);-- Add comments to the columns comment on column DPHOMEWMS.WMS_OPERATION_RECORD_TMP.WAREHOUSE_ID is ‘倉庫id‘;comment on column DPHOMEWMS.WMS_OPERATION_RECORD_TMP.ASN_ID is ‘收貨單id‘;comment on column DPHOMEWMS.WMS_OPERATION_RECORD_TMP.PICK_TICKET_ID is ‘發貨單ID‘;comment on column DPHOMEWMS.WMS_OPERATION_RECORD_TMP.RELATION_CODE is ‘關聯單據號(收貨單或發貨單的code)‘;comment on column DPHOMEWMS.WMS_OPERATION_RECORD_TMP.OPERATION_TYPE is ‘操作類型‘;comment on column DPHOMEWMS.WMS_OPERATION_RECORD_TMP.OPERATION_ID is ‘操作人ID‘;comment on column DPHOMEWMS.WMS_OPERATION_RECORD_TMP.OPERATION_NAME is ‘操作人名稱‘;comment on column DPHOMEWMS.WMS_OPERATION_RECORD_TMP.OPERATION_TIME is ‘操作時間‘;comment on column DPHOMEWMS.WMS_OPERATION_RECORD_TMP.STATUS is ‘狀態‘;comment on column DPHOMEWMS.WMS_OPERATION_RECORD_TMP.TYPE is ‘明細或者統計次數類型‘;comment on column DPHOMEWMS.WMS_OPERATION_RECORD_TMP.COUNTS is ‘統計次數‘;update DPHOMEWMS.WMS_OPERATION_RECORD set OPERATION_TIME = sysdate where OPERATION_TIME is null;insert into DPHOMEWMS.WMS_OPERATION_RECORD_TMP select * from WMS_OPERATION_RECORD;drop table DPHOMEWMS.WMS_OPERATION_RECORD;alter table DPHOMEWMS.WMS_OPERATION_RECORD_TMP rename to WMS_OPERATION_RECORD;alter table DPHOMEWMS.WMS_OPERATION_RECORD enable row movement;
(1)OPERATION_TIME是分區鍵,每一個月會自動建立一個分區,分區鍵不允許為null。
(2)alter table table_name enable row movement; 是指允許分區表的分區鍵是可更新,當某一行更新時,如果更新的是分區列,並且更新後的列值不屬於原來的這個分區,如果開啟了這個選項,就會把這行從這個分區中delete掉,並加到更新後所屬的分區,此時就會發生rowid的改變。相當於一個隱式的delete+insert,但是不會觸發insert/delete觸發器。如果沒有開啟這個選項,就會在更新時報錯。
oracle分區表按時間自動建立