ITPub博客

首页 > 数据库 > Oracle > 关于索引与分区表的那么点事

关于索引与分区表的那么点事

原创 Oracle 作者:dbcloudy 时间:2014-12-02 09:58:20 2 删除 编辑

创建索引时应遵循如下策略:导入数据后在创建索引。不需要为很小的表创建索引。对于取值范围很小的字段应当建议位图索引。限制表中的索引数目。为索引设置合适的PCTFREE值。存储索引的表空间最好单独设立。

Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0
Connected as wlzx


SQL> create table test3(
  2  col1 NUMBER,
  3  col2 NUMBER,
  4  CONSTRAINT uk_col1 UNIQUE(col1) USING INDEX LOCAL)
  5  PARTITION BY RANGE(col2)
  6  (PARTITION p1 VALUES LESS THAN (100),
  7  PARTITION p2 VALUES LESS THAN(MAXVALUE));

create table test3(
...

ORA-14039: 分区列必须构成 UNIQUE 索引的关键字列子集
--未分区字段不能创建LOCAL Unique索引

SQL> CREATE TABLE test3(
  2  col1 NUMBER,
  3  col2 NUMBER,
  4  CONSTRAINT uk_col1 UNIQUE(col1) USING INDEX)
  5  PARTITION BY RANGE(col2)
  6  (PARTITION p1 VALUES LESS THAN (100),
  7  PARTITION p2 VALUES LESS THAN(MAXVALUE));

Table created
--未分区字段可以创建全局Unique索引

SQL> CREATE TABLE test3(
  2  col1 NUMBER,
  3  col2 NUMBER,
  4  CONSTRAINT uk_col2 UNIQUE(col2) USING INDEX LOCAL)
  5  PARTITION BY RANGE(col2)
  6  (PARTITION p1 VALUES LESS THAN(100),
  7  PARTITION p2 VALUES LESS THAN(MAXVALUE));

Table created
--分区字段能创建LOCAL Unique索引

SQL> CREATE TABLE test3(
  2  col1 NUMBER,
  3  COL2 NUMBER,
  4  CONSTRAINT uk_col2 UNIQUE(col1,col2) USING INDEX LOCAL)
  5  PARTITION BY RANGE(col2)
  6  (PARTITION p1 VALUES LESS THAN (100),
  7  partition p2 VALUES LESS THAN(MAXVALUE));

Table created
--可以创建包含分区字段的联合Unique索引

 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29438041/viewspace-1353515/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2014-01-12

  • 博文量
    44
  • 访问量
    125938