일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 프로그래머스
- 오블완
- SQL
- 자바스크립트
- DP
- group by
- Dynamic Programming
- Python
- programmers
- 소프티어
- javascript
- select
- 깊이 우선 탐색
- Java
- Lv. 2
- Lv. 3
- join
- bfs
- LEVEL 2
- 동적계획법
- 티스토리챌린지
- Lv. 1
- C언어
- softeer
- 파이썬
- SQL 고득점 KIT
- level 3
- dfs
- Lv. 0
- 너비 우선 탐색
- Today
- Total
몸과 마음이 건전한 SW 개발자
프로그래머스 Lv. 2 가격이 제일 비싼 식품의 정보 출력하기 SQL 본문
문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/131115
정답 코드 1
SELECT
PRODUCT_ID,
PRODUCT_NAME,
PRODUCT_CD,
CATEGORY,
PRICE
FROM FOOD_PRODUCT
ORDER BY PRICE DESC
LIMIT 1;
정답 코드 2
SELECT
PRODUCT_ID,
PRODUCT_NAME,
PRODUCT_CD,
CATEGORY,
PRICE
FROM FOOD_PRODUCT
WHERE PRICE = (SELECT MAX(PRICE) FROM FOOD_PRODUCT);
Key Point
성능확인
두 SQL 쿼리는 모두 가장 비싼 음식 제품의 정보를 조회하는 것을 목적으로 합니다. 하지만 성능 측면에서 다른 접근 방식을 취하고 있습니다.
첫 번째 쿼리는 ORDER BY PRICE DESC LIMIT 1을 사용하여 가장 비싼 제품을 찾습니다. 이 방식은 전체 테이블을 가격 내림차순으로 정렬한 후 가장 상단의 데이터(가장 비싼 제품)만을 반환합니다. 대규모 데이터에서는 전체 테이블을 정렬하는 과정에서 성능 저하가 발생할 수 있습니다.
두 번째 쿼리는 WHERE PRICE = (SELECT MAX(PRICE) FROM FOOD_PRODUCT)를 사용합니다. 이는 먼저 SELECT MAX(PRICE)를 통해 가장 높은 가격을 찾은 다음, 그 가격과 일치하는 제품을 조회합니다. 이 방식은 가격이 최대인 제품을 직접 탐색하기 때문에, 전체 테이블을 정렬하는 과정 없이 원하는 데이터를 빠르게 찾을 수 있습니다.
일반적으로, 두 번째 쿼리가 성능 측면에서 더 효율적일 가능성이 높습니다. 왜냐하면 전체 데이터를 정렬하는 대신 최대 값을 직접 찾아내기 때문에 처리해야 할 데이터 양이 적고, 실행 시간이 더 빠를 수 있기 때문입니다. 하지만 실제 성능은 데이터베이스의 크기, 인덱싱, DBMS의 최적화 방식 등 다양한 요소에 따라 달라질 수 있습니다. 그래서 가장 정확한 비교를 위해서는 실제 데이터와 DBMS 환경에서 두 쿼리를 실행해보고 실행 시간과 자원 사용량을 비교하는 것이 좋습니다.
'SQL' 카테고리의 다른 글
프로그래머스 Lv. 2 동물 수 구하기 SQL (0) | 2024.01.01 |
---|---|
프로그래머스 Lv. 2 최솟값 구하기 SQL (0) | 2024.01.01 |
프로그래머스 SQL 고득점 Kit Lv. 2 SELECT 2문제 모음 (0) | 2024.01.01 |
프로그래머스 SQL 고득점 Kit Lv 1 String, Date 2 문제 모음 (1) | 2023.12.30 |
프로그래머스 SQL 고득점 Kit Lv 1 IS NULL 4 문제 모음 (0) | 2023.12.30 |