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
'DB > postgresql' 카테고리의 다른 글
[POSTGRESQL] 시퀀스값 컬럼값 order by로 update하기. (0) | 2023.06.08 |
---|---|
[PostgreSQL] 배열 함수(array_agg, array_to_string) (0) | 2022.02.27 |
[POSTGRESQL] 계층형 쿼리, RECURSIVE (0) | 2022.01.22 |
postgresql function만들기. (feat. for문) (0) | 2021.02.07 |