강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của jason8373
jason8373

câu hỏi đã được viết

Bài tập SQL cho phân tích dữ liệu (Advent of SQL 2024)

Ngày 6. Tìm nhà phát hành đã phát hành hơn 10 trò chơi (Lớp nhập môn Tuần 4)

Day 6 질문

Đã giải quyết

Viết

·

92

0

SELECT 
  c.name
FROM companies c
JOIN games g 
ON c.company_id = g.publisher_id
GROUP BY c.company_id, c.name
HAVING COUNT(g.game_id) >= 10;

이렇게 풀어도 되는데, 뭐가 더 좋은 풀이인지 궁금합니다~~

강의에서 설명하신 것처럼, 먼저 뭐부터 뽑을지 정하고, 거기에 필요한 걸(JOIN같은것) 추가하듯이 푸는게 좋은건가요?

sqlmysqlpostgresqlsqlite

Câu trả lời 2

0

sunmiyoon님의 프로필 이미지
sunmiyoon
Người chia sẻ kiến thức

안녕하세요. 좋은 질문 감사합니다.

games 테이블이 매우 크고, 이렇게 매우 큰 테이블의 조인키에 인덱스가 걸려있지 않다면 제 풀이처럼 필터링을 먼저 해서 조인 전 데이터를 압축하는게 성능면에서 좋을 수 있습니다. 조인이 굉장히 비싼 연산이기 때문입니다.

SQL 성능 최적화는 상황에 따라 어떤 것이 좋은 풀이인지 달라지기 때문에 어떤 방식이 무조건 좋다고 말하기는 어려워서 어떤 경우에는 Jason 님 풀이가 더 좋을 수도 있습니다. 테이블의 인덱스 구조와 EXPLAIN을 통한 실행계획을 잘 살펴보시는 것을 추천합니다. 이 내용은 데이터리안의 SQL 데이터 분석 캠프 | 마스터반 3주차 ~ 5주차에서도 다루니 참고해주세요.

Jason님의 프로필 이미지
Jason
Người đặt câu hỏi

아~~~ 넵! 감사합니다!!! 🙏🏻

0

안녕하세요, 인프런 AI 인턴입니다. Jason님.

SQL 쿼리의 가장 좋은 풀이 방식은 종종 주어진 문제의 목표와 데이터베이스의 구조에 따라 달라질 수 있습니다. 하지만 일반적으로 SQL 최적화 및 가독성을 위해 아래와 같은 팁을 고려할 수 있습니다:

  1. 가독성: 가독성을 높이면 쿼리를 수정하거나 오류를 탐지하기 쉬워집니다. 작은 조각으로 쿼리를 나눈 다음 조합하는 방식은 일반적으로 더 읽기 쉬운 쿼리를 만들어냅니다. 이 방향에서 보면, 강의에서 소개된 방법(필요한 데이터를 먼저 선택한 후 JOIN을 추가하는)도 좋은 접근 방식입니다.

  2. 효율성: 큰 데이터 세트에서 쿼리를 실행할 때는 효율성이 중요합니다. 필터링을 먼저 적용한 후에 필요 시 JOIN을 사용하는 방법은 쿼리를 최적화하는 데 도움이 될 수 있습니다.

질문에 사용한 쿼리에서는 ‘출판사별로 10개 이상의 게임을 출시한 회사의 이름’을 얻기 위해 GROUP BYHAVING 절을 사용한 좋은 예제입니다. 이 쿼리는 필요한 데이터를 정확하게 추출하는 적절한 방법입니다.

관련된 예제와 자세한 설명은 아래 링크에서 확인할 수 있습니다:

이 정보를 통해 자신의 쿼리가 어떻게 작동하는지 더 깊이 이해하고 싶다면 참조하세요.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

Hình ảnh hồ sơ của jason8373
jason8373

câu hỏi đã được viết

Đặt câu hỏi