by 곰장어 [SQL Query] [2021.04.27 11:24:01]
컬럼1에는 중복되는 값이 들어있고
컬럼2에는 유니크한 값이 들어있는데
컬럼1,컬럼2 를 묶어서 하나의 PRIMARY KEY 로 지정하였습니다. (컬럼1,컬럼2에 자동으로 인덱스 생성)
이때 쿼리문 작성시 Select * FROM 테이블명 WHERE 컬럼1=값 AND 컬럼2=값
이런식으로 작성해주어야 하는지
아니면 그냥 Select * FROM 테이블명 WHERE 컬럼2=값
이렇게만 해주어도 되는지 질문드립니다 감사합니다.
WHERE 컬럼1=값 AND 컬럼2=값
또는
WHERE 컬럼1=값
이어야 겠죠.
아래는 플랜을 확인하는 예시입니다. 여기 강좌나 인터넷을 찾아보시면 다른 방법도 있습니다~
SQL> create table t as select 1 a, level b, level + 2 c from dual connect by level < 10 union all select 2 a, level b, level + 2 c from dual connect by level < 10 union all select 3 a, level b, level + 2 c from dual connect by level < 10 union all select 4 a, level b, level + 2 c from dual connect by level < 10 Table created. SQL> create unique index pk_t on t (a,b); Index created. SQL> alter table t add constraint pk_t primary key (a,b) using index pk_t; Table altered. SQL> explain plan for select a,b,c from t where b=2; Explained. SQL> select * from table(dbms_xplan.display); PLAN_TABLE_OUTPUT -------------------------------------------------------------------------------- Plan hash value: 2153619298 -------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | -------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | 39 | 3 (0)| 00:00:01 | |* 1 | TABLE ACCESS FULL| T | 1 | 39 | 3 (0)| 00:00:01 | -------------------------------------------------------------------------- SQL> explain plan for select a,b,c from t where a=2; Explained. SQL> select * from table(dbms_xplan.display); PLAN_TABLE_OUTPUT -------------------------------------------------------------------------------- Plan hash value: 742638319 ------------------------------------------------------------------------------------ | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | ------------------------------------------------------------------------------------ | 0 | SELECT STATEMENT | | 9 | 351 | 2 (0)| 00:00:01 | | 1 | TABLE ACCESS BY INDEX ROWID| T | 9 | 351 | 2 (0)| 00:00:01 | |* 2 | INDEX RANGE SCAN | PK_T | 9 | | 1 (0)| 00:00:01 | ------------------------------------------------------------------------------------