Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Haruskah saya mempartisi/subpartisi tabel saya?

Anda dapat mencoba dengan cara ini:gunakan INTERVAL untuk memberi tahu Oracle untuk membuat partisi otomatis. Anda harus menentukan kolom (nomor atau tanggal) dan interval (dalam contoh saya 1 bulan). Oracle akan menempatkan di partisi yang sama semua baris dalam interval yang sama (dalam hal ini di bulan yang sama). Jika partisi tidak ada akan dibuat.

create table log(
       id_dispositive    number,
       date    date,
       status  number,
       type    number
)
partition by range (date)                              
interval (numtoyminterval(1,'MONTH'))(
   partition p0701 values less than (to_date('2007-02-01','yyyy-mm-dd'))
);

Hal yang sama dapat dilakukan juga dengan tipe kolom. Informasi lebih lanjut:http://www.Oracle.com/ technetwork/articles/sql/11g-partitioning-084209.html .

Setiap partisi dapat disubpartisi menggunakan kunci TEMPLATE.

create table log(
       id_dispositive    number,
       date    date,
       status  number,
       type    number
)
partition by range (date) interval (numtoyminterval(1,'MONTH'))
subpartition by list (type)  
subpartition TEMPLATE (
    SUBPARTITION types1 VALUES (1, 2) TABLESPACE tbs_1,
    SUBPARTITION types2 VALUES (3, 4) TABLESPACE tbs_1
)                          
(
   partition p0701 values less than (to_date('2007-02-01','yyyy-mm-dd'))
);

Dalam hal ini Anda tidak dapat membuat subpartisi otomatis, jika tipe baru akan ditambahkan, Anda harus menjalankan pernyataan tabel perubahan. Berikut informasi lebih lanjut; https://docs.Oracle.com/cd /B28359_01/server.111/b32024/part_admin.htm#i1006655 .

Dalam contoh Anda:

create table prova_log(
       id_dispositive    number,
       type       number,
       date_verification    date,
       status  number
)
partition by range (date_verification) interval (numtoyminterval(1,'MONTH'))
subpartition by list (type)  
subpartition TEMPLATE (
    SUBPARTITION type1 VALUES (1),
    SUBPARTITION type2 VALUES (2),
    SUBPARTITION type3 VALUES (3),
    SUBPARTITION type4 VALUES (4)
)                          
(
   partition p0816 values less than (to_date('01/09/2016','dd/mm/yyyy'))
);

Jika Anda mencoba memasukkan:

insert into prova_log values (1,1,TO_DATE('10/10/2016','dd/mm/yyyy'),1);

Anda akan melihat 2 partisi di meja Anda.

Sekarang saya sudah mengujinya!




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apakah ada perbedaan antara !=dan <> di Oracle Sql?

  2. Buat dropdownlist dari nilai di database php

  3. Urutan Oracle:CURRVAL tidak diizinkan di sini?

  4. Permintaan terbaik untuk mencapai indeks Oracle dengan ikatan dan nilai nol

  5. ORA-04084:tidak dapat mengubah nilai BARU untuk jenis pemicu ini