1. 아래의 테이블 구조를 먼저 보시구요. (대략적으로만 보시면 될거 같아요)
CREATE TABLE T_MSTR_TEST { C1 VARCHAR2(10) NOT NULL; C2 VARCHAR2(10) NOT NULL; C3 VARCHAR2(10) NOT NULL; C4 VARCHAR2(10) NOT NULL; C5 VARCHAR2(10) NULL; C6 VARCHAR2(10) NULL; } ALTER TABLE TABLE T_MSTR_TEST ADD CONSTRAINT PK_T_MSTR_TEST PRIMARY KEY(C1, C2, C3, C4); CREATE TABLE T_SUB_TEST { C1 VARCHAR2(10) NOT NULL; C2 VARCHAR2(10) NOT NULL; C3 VARCHAR2(10) NOT NULL; C4 VARCHAR2(10) NOT NULL; C5 VARCHAR2(10) NOT NULL; C6 VARCHAR2(10) NULL; C7 VARCHAR2(10) NULL; } ALTER TABLE TABLE T_SUB_TEST ADD CONSTRAINT PK_T_SUB_TEST PRIMARY KEY(C1, C2, C3, C4, C5); ALTER TABLE TABLE T_SUB_TEST ADD CONSTRAINT FK_T_SUB_TEST FOREIGN KEY(C1, C2, C3, C4,) REFERENCE T_MSTR_TEST (C1, C2, C3, C4);
위의 내용을 정리하자면, T_MSTR_TEST 테이블은 PK(C1, C2, C3, C4)이고, TABLE T_SUB_TEST 테이블은 PK (C1,C2,C3,C4,C5),
FK(C1,C2C3,C4)의 조합키인데요, 두 테이블 조인 및 성능 측면에서 질문입니다.
가. T_SUB_TEST 테이블에서, 조인시에 왜래키인덱스가 없을 때 인덱싱이 적용되나요?
- PK가 FK컬럼들을 포함(순서 동일함)하고 있어서 PK인덱시를 사용하므로 FK인덱싱이 필요없는건가요?
나. T_SUB_TEST 테이블에서, 외래키 인덱스 생성이 필요한가요? (필요하다면 UNIQUE, NON-UNIQUE 어느것 사용)
다. 일반적으로, 조인시 WHERE절 조인에 PK컬럼 중 일부만 또는 전부를 걸었을 경우에 인덱싱을 타는지가 달라지나요?
좀 상세하게 답변 부닥드립니다. 감사합니다.