개발Story
Published 2022. 2. 13. 18:46
[PostgreSQL] EXITS 연산자 DB/postgresql

query를 사용하다보면 존재여부를 판단할 일이 많다.

 

보통 select count(*) 를 쓰는 경우를 많이 봤는데 기능은 동작하지만 성능면에서 fullsacn을하여 좋지 않다.

존재여부를 알 수 있는 EXITS연산자를 알아보자.

 

단어의 의미를 파악하면

EXITS : 동사로 존재하다.(v)

=>단어 그대로 받아 들이면 될 것 같다. 조건으로 주어 존재여부를 판단하는 연산식이다.

존재 여부만 판단하고 break를 하여 연산 시 부하가 줄어든다고 한다.

 

[문법]

EXITS(subquery)

NOT EXITS (subquery)

 

 

 

[사용법]

SELECT * FROM zzang9iu m WHERE EXISTS ( SELECT 1 FROM zzang9iu r WHERE r.z_id = m.z_id AND z.read > 11 )

select에서 사용하는 1은 의미없는 값이다.

 

안좋은 사용법으로는 count(*)을 하는것이다.

 

[count를 이용한 방법]

SELECT * FROM zzang9iu m WHERE 1 > ( SELECT count(*) FROM zzang9iu r WHERE r.z_id = m.z_id AND z.read > 11 )

대용량의 데이터일 경우 성능면에서 많은 차이가 발생한다.

 

 

참고 : https://www.postgresql.org/docs/10/functions-subquery.html
참고 : https://mine-it-record.tistory.com/459

 

profile

개발Story

@슬래기

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!