반응형
먼저, 데이터 존재 여부를 체크하기 위해 COUNT(*) 혹은 COUNT(1)이 사용되는 것을 확인할 수 있다.
둘은 같은 의미이고, 개발자마다의 스타일 차이이다. COUNT(*)로 존재 여부를 체크하거나 COUNT(1)로 쿼리를 짜서
체크하는 코드를 볼 수 있지만, 가독성을 위해 COUNT(*) 사용하는 것을 추천한다.
COUNT(!)의 의미를 몰라 검색해 보거나, 설명해야 하는 불필요한 상황이 발생할 수 있으니 가급적 공용화된 COUNT(*)로 데이터 존재 여부를 체크하길 바란다.
자, 이제 그러면
존재 여부를 체크하기 위해 COUNT(*)를 쓸 것 인가, EXISTS를 쓸 것인가 차이가 궁금할 것이다.
결론은, 대용량 데이터가 있을 때 훨씬 EXISTS의 속도가 더 빠르다.
COUNT는 모든 행을 검사하고, EXISTS는 존재하는 데이터 발견 즉시 검사를 종료하기 때문이다.
예시:

LIMIT 또한 EXISTS와 비슷하게 빠르지만 둘은 성능 차이가 비슷하다.

따라서,
존재 여부를 체크하는 쿼리를 짤때는 웬만하면 EXISTS 사용하는 것을 추천한다.
반응형
'MySQL' 카테고리의 다른 글
51회 SQLD 4일 벼락치기 합격 후기 (2) | 2024.06.03 |
---|---|
[MySQL] DECIMAL, FLOAT, DOUBLE, BIT 소수점 표현 (0) | 2024.02.10 |
[MySQL] AUTO INCREMENT vs UUID (0) | 2024.02.10 |
[MySQL] tinyint, smallint, int, bigint 비교 (2) | 2024.02.10 |
[MySQL] DATE, DATETIME, TIMESTAMP, TIME 차이 (0) | 2024.02.10 |