我收到错误 ORA-01450:超出最大密钥长度(6398),因为我尝试创建索引
CREATE INDEX FORENAME_SURNAME ON CARD_HOLDER( REGEXP_REPLACE (UPPER( FORENAME ),'\\s|-|_|\\.|\\:|\\,',''), REGEXP_REPLACE (UPPER( SURNAME ),'\\s|-|_|\\.|\\:|\\,','') );
错误代码是公平的,但我的列每个都是100Bytes,所以索引如何超过最大值?
db_block_size = 8192而非6398。
列定义
CREATE TABLE CARD_HOLDER
( "CARD_HOLDER_ID" NUMBER NOT NULL ENABLE,
"TITLE" VARCHAR2(10 BYTE),
"FORENAME" VARCHAR2(100 BYTE),
"SURNAME" VARCHAR2(100 BYTE) NOT NULL ENABLE,
)
答案 0 :(得分:0)
您可以尝试使用连接而不是两个不同的列。但是,这只是一种解决方法,除非您在串联时使用查询,否则可能没用。
CREATE INDEX forename_surname ON
card_holder ( regexp_replace(upper(forename),'\\s|-|_|\\.|\\:|\\,','')
|| regexp_replace(upper(surname),'\\s|-|_|\\.|\\:|\\,','') );