database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 41788 게시물 읽기
No. 41788
조건절에 IN 절 과 조건을 아예 안쓰는 것.
작성자
궁금이
작성일
2020-03-06 11:30
조회수
725

 안녕하세요.

쿼리 select 를 하는데 궁금한 점이 있어서 문의 드립니다.

조건절에서 IN 절을 사용하는데 그 IN 절안에 해당 테이블 데이터가 다 들어가 있다면 조회조건을 붙히는 것이 좋은건가요? 아니면 조회조건 자체를 없는 것이 좋은건가요?

 

 

 

 

WITH TEST_DATA AS

(

    SELECT 'A' AS ACOL, 'B' AS BCOL, 'C' AS CCOL FROM DUAL UNION ALL

    SELECT 'D' AS ACOL, 'E' AS BCOL, 'F' AS CCOL FROM DUAL UNION ALL

    SELECT 'G' AS ACOL, 'H' AS BCOL, 'I' AS CCOL FROM DUAL

)

SELECT * FROM TEST_DATA

WHERE ACOL IN ('A', 'D', 'G') -- > 이 부분이 궁금해서요. 해당 조건을 다 사용하는 것이 좋은지 , 아니면 조건절 자체를 없애는 것이 좋은지.

버전은 오라클 11입니다.

위 조건 말고도 다른 조건도 포함되어 있다면 달라지는지도 궁금하네요.

감사합니다.

 

이 글에 대한 댓글이 총 5건 있습니다.

optimizer가 판단할 것 같은데 통계정보에 따라 index를 사용할 수도 있고 테이블만 전체 스캔할 수도 있습니다.

저렇게 필터 조건이 전체에 해당된다면 인덱스를 사용하는 것이 성능상 불리할 수도 있습니다.

다른 조건이 있다면 그것도 인덱스 유무에 따라서 달라지겠죠

정상규(pajama)님이 2020-03-06 12:54에 작성한 댓글입니다.

 아.. 그렇군요

 결국 Index를 타는 것이라면 불리하니까 차라리 조건절을 없애는 것이 낫다고 봐야 하는군요.

 감사합니다.

궁금이님이 2020-03-06 13:21에 작성한 댓글입니다. Edit

다 포함 된다면 제거하는게 좋습니다. 

X Y Z 같은 코드가 더 생길경우

지금 조건만 포함하겠다 라는 게 있다면 있어야 겠지만,

이런 경우는 나중에 개발하면서 하시면 될 것 같습니다. 

lucky님이 2020-03-06 15:05에 작성한 댓글입니다.
이 댓글은 2020-03-06 15:42에 마지막으로 수정되었습니다. Edit

Simple is the best.

마농(manon94)님이 2020-03-06 15:18에 작성한 댓글입니다.

좋은 정보 감사합니다.

궁금이님이 2020-03-13 10:26에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
41792DBMS_SCHEDURE REPEAT_INTERVAL설정 [1]
박태학
2020-04-07
540
41791속도 개선 관련 문의 드립니다. [5]
이상영
2020-04-06
695
41789오라클완전초짜질문 [5]
조희정
2020-03-09
749
41788조건절에 IN 절 과 조건을 아예 안쓰는 것. [5]
궁금이
2020-03-06
725
41787Oracle 계층쿼리 관련 문의 드립니다. [2]
떡종이
2020-03-04
7406
41786sqlplus 삭제 시 [1]
김현우
2020-02-27
606
41785ORA-12505에러 [4]
신승익
2020-02-12
948
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2020 DSN, All rights reserved.
작업시간: 0.044초, 이곳 서비스는
	PostgreSQL v13.0으로 자료를 관리합니다