SELECTemp_name,MAX(team)ASteamFROMemployeesGROUPBYemp_nameHAVINGCOUNT(*)=1UNIONSELECTemp_name,'2개를 겸무'ASteamFROMemployeesGROUPBYemp_nameHAVINGCOUNT(*)=2UNIONSELECTemp_name,'3개 이상을 겸무'ASteamFROMemployeesGROUPBYemp_nameHAVINGCOUNT(*)>=3
employees 테이블 풀 스캔 3회
CASE 식을 사용한 방법
SELECTemp_name,CASEWHENCOUNT(*)=1THENMAX(team)WHENCOUNT(*)=2THEN'2개를 겸무'WHENCOUNT(*)>=3THEN'3개 이상을 겸무'ENDASteamFROMemployeesGROUPBYemp_name
employees 테이블 풀 스캔 1회
그래도 UNION이 필요한 경우
UNION을 사용할 수 밖에 없는 경우
여러 개의 테이블에서 검색한 결과를 머지하는 경우
FROM 구에서 테이블을 결합하면 필요 없는 결합이 발생하여 성능적으로 악영향
UNION을 사용하는 것이 성능적으로 더 좋은 경우
테이블이 크고, WHERE 조건으로 선택되는 레코드의 수가 충분히 작다면 UNION을 사용하여 인덱스 스캔을 실행하는 경우가 더 빠를 수도 있음