1. 배경
1) 코드 관련 테이블 설계 중 "[42000][1071] Specified key was too long; max key length is 3072 bytes" 오류 발생
2. 처리방안
※ 참고 : EUC-KR 언어셋 : 2 bytes, UTF-8 3 bytes, UTF-8 MB4 4bytes
1) 내 데이터베이스는 현재 UTF-8 MB4로 구성되어있다.
- 이유는 현존하는 데이터 형식이 이모지 => UTF8MB4 이기 때문에 용량과 리소스를 좀 더 사용하더라도
UTF8 MB4로 구성하는게 맞다 생각해서이다.
2) 4개의 필드 컬럼을 최초 1000으로 설정 하였더니 인덱스 사이즈 오버로 인해 다음과 같이 변경을 한다.
- (3072 byte / 4 (컬럼 4개)) / 4 (UTF8MB4 4byte) => 필드당 192 bytes 설정이 가능하다.
-- auto-generated definition
create or replace table TB_CODE
(
GROUP_CD VARCHAR(6) not null comment '그룹코드',
GROUP_NM VARCHAR(1000) not null comment '그룹명',
CD VARCHAR(6) not null comment '코드',
CD_NM VARCHAR(1000) not null comment '코드명',
ETC_1 VARCHAR(192) comment '확장필드 1',
ETC_2 VARCHAR(192) comment '확장필드 2',
ETC_3 VARCHAR(192) comment '확장필드 3',
ETC_4 VARCHAR(192) comment '확장필드 4',
SORT_ORDER int comment '정렬순서',
REG_DT datetime comment '등록일',
UP_DT datetime comment '수정일',
DEL_YN int default '0' comment '사용여부',
constraint PK_CODE
primary key (GROUP_CD, CD)
) COMMENT '공통 코드 테이블';
create or replace index TB_CODE_IDX_1_1
on TB_CODE (ETC_1, ETC_2)
;
create or replace index TB_CODE_IDX_1_2
on TB_CODE (ETC_1, ETC_2, ETC_3)
;
create or replace index TB_CODE_IDX_1_3
on TB_CODE (ETC_1, ETC_2, ETC_3, ETC_4)
;
create or replace index TB_CODE_IDX_2
on TB_CODE (ETC_1)
;
create or replace index TB_CODE_IDX_3
on TB_CODE (ETC_2)
;
create or replace index TB_CODE_IDX_4
on TB_CODE (ETC_3)
;
create or replace index TB_CODE_IDX_5
on TB_CODE (ETC_4)
;
'Programming > 기본 (Baisc)' 카테고리의 다른 글
[ORACLE] 19c 설치 방법 (0) | 2022.03.08 |
---|---|
[JAVA] [V3] 연동시 테스트(*패턴) 검사용 임시 파일 (0) | 2022.02.27 |
[AWS 이관][AWS Migration] 카페24 Cafe24 to Amazon AWS EC2 (0) | 2022.01.20 |
[오라클] 스키마 추출. (0) | 2022.01.08 |
[DB] [Oracle] 오라클 계층 쿼리 (0) | 2022.01.03 |