Oracle分区和索引

时间:2013-06-06 14:47:20

标签: sql oracle partitioning indexing

我在理解这个问题上遇到了一些麻烦。也许有人可以提供帮助。

有人让我创建一个应该分为两个级别的表:

1 - 时间 2 - 位置。

客户应该有一个全球倒排索引 - 这是我最大的问题。什么是全球倒排指数?

这是表结构(已经创建):

CREATE TABLE MY_TABLE
(
TIME          DATE,
LOCATION      NUMBER,
CUSTOMER_ID   NUMBER,
CUSTOMER_NAME VARCHAR2(200)
);

(以及其他一些专栏......)

我该怎么做? 提前谢谢。

1 个答案:

答案 0 :(得分:1)

CREATE TABLE my_table
(
    a_time        DATE,
    a_location    NUMBER,
    customer_id   NUMBER,
    customer_name VARCHAR2(200)
)
PARTITION BY RANGE (a_time)
SUBPARTITION BY LIST (a_location)
(
    PARTITION p_20130101 VALUES LESS THAN (TO_DATE('2013-01-01', 'YYYY-MM-DD'))
    (
        SUBPARTITION a_location_1_1 VALUES (1),
        SUBPARTITION a_location_1_2 VALUES (2),
        SUBPARTITION a_location_1_3 VALUES (3)
    ),
    PARTITION p_20130201 VALUES LESS THAN (TO_DATE('2013-02-01', 'YYYY-MM-DD'))
    (
        SUBPARTITION a_location_2_1 VALUES (1),
        SUBPARTITION a_location_2_2 VALUES (2),
        SUBPARTITION a_location_2_3 VALUES (3)
    ),
    PARTITION p_20130301 VALUES LESS THAN (TO_DATE('2013-03-01', 'YYYY-MM-DD'))
    (
        SUBPARTITION a_location_3_1 VALUES (1),
        SUBPARTITION a_location_3_2 VALUES (2),
        SUBPARTITION a_location_3_3 VALUES (3)
    )
)
ENABLE ROW MOVEMENT;

Oracle反向索引用于表中的字符串和列的数字(my_table_idx)。 我建议定期索引。

CREATE INDEX my_table_idx ON my_table(customer_id);