728x90
'SELECT COUNT(*) FROM ... WHERE ...'와 같이 특정 조건의 데이터 여부를 확인할 때 COUNT 함수를 사용하곤 하는데, 이 경우에는 조건에 맞는 데이터를 모두 쿼리한 다음 그 수를 세기 때문에 이럴 경우에는 EXISTS를 사용하는 것이 좋습니다.
'SELECT EXISTS(SELECT * FROM ... WHERE ...)'와 같이 EXISTS 함수를 사용하는 것이 훨씬 좋습니다.(이 경우에는 한 번만 쿼리합니다.)
MariaDB
SELECT COUNT(*) FROM TABLENAME WHERE VAL_COL1 = ?
SELECT EXISTS(SELECT * FROM TABLENAME WHERE VAL_COL1 = ?)
Oracle
SELECT 1 FROM DUAL WHERE EXISTS(SELECT 1 FROM [테이블명] WHERE [조건]);
위의 sql을 실행하면 서브쿼리가 테이블에 조건에 맞는 데이터가 있는 경우 1을 반환하게 되고, 외부 쿼리는 내부 쿼리의 결과가 1일 경우(NULL이 아닌 1이 반환됐을 경우) EXISTS가 참이 되므로 다시금 1을 반환합니다. (내부 쿼리에서 데이터가 있는 경우 1을 조회해오도록 한 것은 쿼리하는 데이터의 양을 최소화하기 위함입니다.)
반응형
'Database' 카테고리의 다른 글
SQL) WITH절을 이용해 가독성 높이기 (0) | 2024.08.15 |
---|---|
Insert if not exist(데이터가 존재하지 않는 경우에만 insert 하기) (0) | 2023.05.11 |
오라클(Oracle) 포트 변경 (0) | 2021.05.04 |