일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- Package
- list
- format
- enV
- judge
- numpy
- docker
- Database
- LLM
- pytorch
- DB
- Converting
- CUDA
- evaluation
- TORCH
- Flask
- pandas
- git
- Laravel
- Python
- file
- GitLab
- Container
- KAKAO
- Linux
- Windows
- AI
- Mac
- Paper
- PostgreSQL
Archives
- Today
- Total
Daily Develope
[DB] EXISTS / IN / JOIN 비교 본문
EXISTS
ㅇ 예시코드
SELECT I.InvoiceID, I.TotalDryItems, People.FullName
FROM Sales.Invoices I
INNER JOIN [Application].People ON I.SalespersonPersonID = People.PersonID
WHERE EXISTS (SELECT 1 FROM vTop3SPs2013Q2 WHERE SalespersonPersonID = I.SalespersonPersonID)
AND I.InvoiceDate BETWEEN '4/1/2013' AND '6/30/2013'
AND I.TotalDryItems >= 4;
ㅇ 장점
- 구현이 쉽고, 가독성이 좋음
- 조건에 해당하는 데이터가 있으면 검사 종료 (IN / JOIN 은 전체 검사)
ㅇ 단점
- 데이터의 존재 여부만 알 수 있어, 적용 범위가 제한적
IN
ㅇ 예시코드
SELECT Invoices.InvoiceID, Invoices.TotalDryItems, People.FullName
FROM Sales.Invoices
INNER JOIN [Application].People ON Invoices.SalespersonPersonID = People.PersonID
WHERE SalespersonPersonID IN (SELECT SalespersonPersonID FROM vTop3SPs2013Q2)
AND InvoiceDate BETWEEN '4/1/2013' AND '6/30/2013'
AND TotalDryItems >= 4;
ㅇ 장점
- 가독성이 좋음
- 일반적인 사용에서는 EXIST / JOIN에 비해 빠름
ㅇ 단점
- "WHERE {value} IN " 구간에서 필요한 value의 수가 다수일 경우 사용 불가 (1개일 때만 사용가능)
- 조건에 해당하는 데이터가 여러개인 경우에도, 하나의 결과만 반환
JOIN
ㅇ 예시코드
SELECT I.InvoiceID, I.TotalDryItems, People.FullName
FROM Sales.Invoices I
INNER JOIN [Application].People ON I.SalespersonPersonID = People.PersonID
INNER JOIN vTop3SPs2013Q2 ON I.SalespersonPersonID = vTop3SPs2013Q2.SalespersonPersonID
WHERE InvoiceDate BETWEEN '4/1/2013' AND '6/30/2013'
AND TotalDryItems >= 4;
ㅇ 장점
- 여러 테이블의 데이터 비교 가능
- 조건에 해당하는 데이터가 여러개인 경우에도 사용 가능
ㅇ 단점
- OUTER JOIN의 경우 비교적 느림
'DB' 카테고리의 다른 글
[PSQL] postgresql 명령어 정리 (0) | 2022.09.27 |
---|---|
[DB] Table 외래키 제약 조건 (0) | 2022.08.10 |
[MySQL] CLI 명령 (0) | 2022.04.03 |
[MySQL] 백어 및 복구 (0) | 2022.01.07 |
[MariaDB] 기본 명령어 (0) | 2022.01.07 |