한 것
- 프로그래머스 : 조건에 맞는 사용자 정보 조회하기 문제 풀기
- ChatGPT로 다른 풀이와 헷갈렸던 개념 정리
- 블로그 포스팅
배운 것
1. SUBSTRING
SUBSTRING(string, start, length)
SELECT SUBSTRING("SQL Tutorial", 5, 3)
>> Tut
SELECT SUBSTRING("SQL Tutorial", -5, 5)
>> orial
✔️ 헷갈렸던 부분
- SUBSTRING(string, start position, end position)라고 생각해서 세 번째 파라미터에 끝나는 지점의 위치 숫자를 적었었다.
- 포지션의 숫자를 셀 때 인덱스처럼 스트링의 첫 번째 글자를 0으로 두고 센다고 생각했었습니다. 실제로는 그렇지 않고, 1부터 포지션 위치를 세면 된다.
2. IN vs EXISTS
EXISTS
- 서브쿼리의 쿼리 결과가 존재하는지 여부만을 판단한다. 결과 집합이 비어있지 않으면 TRUE를 반환한다.
- 결과 집합 자체를 가져오지는 않기 때문에 IN보다 효율적인 경우가 많다.
IN
- IN 구문의 결과 값 중에서 하나라도 일치하는 것이 있으면 조회된다.
- 서브쿼리를 먼저 실행해서 결과 집합을 가져온 뒤, 메인 쿼리의 테이블에서 row 하나를 가져와 해당 row의 값이 서브쿼리의 결과 집합과 하나라도 일치하면 해당 row를 출력하는 방식으로 동작한다. (메인쿼리의 row 개수만큼 반복하여 비교하기 때문에 데이터가 많을수록 EXISTS보다 성능이 떨어지는 경우가 많습니다.)
'소소한 인사이트(TIL)' 카테고리의 다른 글
[데블챌린지#3] 닐 호인 : "지금의 마케팅으론 성공할 수 없다" (0) | 2023.05.01 |
---|---|
[데블챌린지#1] 데이터 분석가가 되어보니 중요한 것들 (1) | 2023.04.25 |
TIL(230424) : 최적선과 회귀분석 (0) | 2023.04.24 |
TIL(230421) : SQL EXISTS복습, 쿼리 효율 고민, 회귀 불연속 설계 (0) | 2023.04.21 |
TIL(230416) : 전후비교설계, 이중차분법 (0) | 2023.04.16 |