0

是否有任何 sql 子集专门处理水平分割表以进行分发?

我必须分割要在商店之间分发的库存表。我不是在寻找一个完整的解决方案,只是朝着正确的方向点头。

我找到了一个与我想要的类似的 IBM 示例(我认为)

CREATE TABLE Tab1 (Col1 INT...)
   FRAGMENT BY RANGE (Col1 MIN 100 MAX 200)
      IN db1, db2, db3, db4;

但我需要一个 Oracle 示例(最高 11g2)。

4

1 回答 1

1

如果您希望将数据分布在不同的 Oracle 数据库之间(即每个商店都安装一个 Oracle 数据库实例),您通常可以通过在每个商店的数据库中创建物化视图来实现这一点,其中包括关于该商店的任何数据的谓词需要访问。

如果您希望数据分布在同一数据库中的多个段中,您可以使用@tbone 在他的评论中建议的分区。例如,从CREATE TABLE文档中,您可以创建一个SALES按季度分区的表。

CREATE TABLE range_sales
    ( prod_id        NUMBER(6)
    , cust_id        NUMBER
    , time_id        DATE
    , channel_id     CHAR(1)
    , promo_id       NUMBER(6)
    , quantity_sold  NUMBER(3)
    , amount_sold         NUMBER(10,2)
    ) 
PARTITION BY RANGE (time_id)
  (PARTITION SALES_Q1_1998 VALUES LESS THAN (TO_DATE('01-APR-1998','DD-MON-YYYY')),
   PARTITION SALES_Q2_1998 VALUES LESS THAN (TO_DATE('01-JUL-1998','DD-MON-YYYY')),
   PARTITION SALES_Q3_1998 VALUES LESS THAN (TO_DATE('01-OCT-1998','DD-MON-YYYY')),
   PARTITION SALES_Q4_1998 VALUES LESS THAN (TO_DATE('01-JAN-1999','DD-MON-YYYY')),
   PARTITION SALES_Q1_1999 VALUES LESS THAN (TO_DATE('01-APR-1999','DD-MON-YYYY')),
   PARTITION SALES_Q2_1999 VALUES LESS THAN (TO_DATE('01-JUL-1999','DD-MON-YYYY')),
   PARTITION SALES_Q3_1999 VALUES LESS THAN (TO_DATE('01-OCT-1999','DD-MON-YYYY')),
   PARTITION SALES_Q4_1999 VALUES LESS THAN (TO_DATE('01-JAN-2000','DD-MON-YYYY')),
   PARTITION SALES_Q1_2000 VALUES LESS THAN (TO_DATE('01-APR-2000','DD-MON-YYYY')),
   PARTITION SALES_Q2_2000 VALUES LESS THAN (TO_DATE('01-JUL-2000','DD-MON-YYYY')),
   PARTITION SALES_Q3_2000 VALUES LESS THAN (TO_DATE('01-OCT-2000','DD-MON-YYYY')),
   PARTITION SALES_Q4_2000 VALUES LESS THAN (MAXVALUE))
;
于 2012-05-18T16:02:39.243 回答