【问题标题】:How to create partition in a functional index in oracle?如何在 oracle 的功能索引中创建分区?
【发布时间】:2020-04-29 10:51:36
【问题描述】:

我试图在 oracle 中的功能索引上创建分区,但失败并出现以下错误。

错误:

ORA-30555:全局索引分区键是一个表达式

语法:

CREATE INDEX TMP_ARA_I9 ON TMP_ARA (
UPPER(JOB_TITLE) ASC,
   UPPER(COMPANY_NAME) ASC
   )
global PARTITION BY HASH ( UPPER(JOB_TITLE) ,
   UPPER(COMPANY_NAME) 
   ) PARTITIONS 4;

【问题讨论】:

  • 您不能使用表达式。在您的特定情况下,您必须以大写形式存储职位和公司名称,然后在这两列上创建索引。

标签: sql oracle indexing sqlperformance


【解决方案1】:

在您的表中创建虚拟列:

ALTER TABLE TMP_ARA ADD (
   UPPER_JOB_TITLE VARCHAR2(20) GENERATED ALWAYS AS (UPPER(JOB_TITLE)) VIRTUAL,
   UPPER_COMPANY_NAME VARCHAR2(20) GENERATED ALWAYS AS (UPPER(COMPANY_NAME)) VIRTUAL
);

然后你可以在那里创建一个索引:

CREATE INDEX TMP_ARA_I9 ON TMP_ARA (
   UPPER_JOB_TITLE, UPPER_COMPANY_NAME
)
GLOBAL PARTITION BY HASH ( 
   UPPER_JOB_TITLE, UPPER_COMPANY_NAME
) PARTITIONS 4;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-15
    • 1970-01-01
    • 2016-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-15
    相关资源
    最近更新 更多