DB/postgresql
[PostgreSQL] EXITS 연산자
슬래기
2022. 2. 13. 18:46
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