[MySQL] SQL 코딩테스트 코드리뷰

2024. 8. 13. 02:09·Backend/DataBase
728x90

https://school.programmers.co.kr/learn/courses/30/lessons/144855

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

SELECT b.category, sum(s.sales) as total_sales
from book b
join book_sales s 
on b.book_id = s.book_id
where s.sales_date like '2022-01%'
group by b.category
order by b.category

 

목적

 - 2022년 1월 동안의 책 판매 데이터를 기반으로 카테고리별 총 판매액을 계산

 - 카페고리별 정렬하여 결과 반환

 

FROM절

 - book b : 책 정보를 담고 있는 테이블, 별칭 b 사용하여 간결하게 함

 - join book_sales s on b.book_id = s.book_id : book_sales 테이블과 book 테이블을 book_id로 조인

 

WHERE절

 - s.sales_date like '2022-01%' : 2022년 1월의 판매 데이터를 필터링함

 - like 연산자를 사용하여 2022-01로 시작하는 데이터를 필터링 할 수 있다.

 

GROUP BY절

 - b.category : 카테고리별로 그룹화하여 판매액 계산

 

ORDER BY절

 - b.category : 결과를 카테고리별로 오름차순 정렬 (asc 생략)

 


💡알게된 것

날짜 필터링 최적화 

where s.sales_date between '2022-01-01' and '2022-01-31'

 

내가 했던 like '2022-01%' 보다 성능개선에  중요한 이유는 ..?

 

1. 인덱스 활용

like 은 문자열로 검색하기 때문에 인덱스를 사용할 때도 전체 데이터에서 문자열을 비교해야 할 수 있다. 이로 인해 성능이 떨어질 수 있다.

반면, between, and, >= , <= 범위 검색은 날짜 컬럼이 인덱스되어 있는 경우, 효율적으로 활용할 수 있다.   인덱스는 날짜 범위에 대해 빠르게 검색할 수 있어 성능 개선된다. (인덱스가 적용된 컬럼에 효율적 !)

 

728x90
저작자표시 (새창열림)

'Backend > DataBase' 카테고리의 다른 글

[MySQL] SQL 코딩테스트 코드리뷰  (0) 2024.08.13
[MySQL] SQL 코딩테스트 코드리뷰  (0) 2024.08.13
[DataBase] ERD 다이어그램 / 슈퍼타입 , 서브타입  (1) 2023.12.02
'Backend/DataBase' 카테고리의 다른 글
  • [MySQL] SQL 코딩테스트 코드리뷰
  • [MySQL] SQL 코딩테스트 코드리뷰
  • [DataBase] ERD 다이어그램 / 슈퍼타입 , 서브타입
hyeminyy
hyeminyy
Full Stack Developer | consistency
  • hyeminyy
    maemingu
    hyeminyy
  • 전체
    오늘
    어제
    • 분류 전체보기 (78)
      • Backend (46)
        • Java (15)
        • JSP & Servlet (5)
        • EL & JSTL (3)
        • Spring (15)
        • DataBase (4)
        • 알고리즘 (4)
      • Frontend (11)
        • Next.js (5)
        • JavaScript (3)
        • Vue.js (3)
      • IT_STUDY (21)
        • 정보처리기사 (9)
        • SQLD (8)
        • 개인공부 (4)
      • Developer! (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • Github
    • Notion-portfolio
  • 공지사항

  • 인기 글

  • 태그

    Servlet
    httpServletRequest
    Java
    정처기 필기 요약
    정처기 요약
    백앤드
    정보처리기사 실기
    Next.js
    정처기 실기 요약
    Spring
    코딩테스트
    백앤드개발자
    뷰
    알고리즘
    NextJS
    el
    정처기 실기
    정보처리기사 실기 요약
    정처기
    정보처리기사
    SQL
    개발자
    springboot
    MVC
    SQLD
    springProject
    jstl
    JSP
    프론트엔드
    sqld자격증
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
hyeminyy
[MySQL] SQL 코딩테스트 코드리뷰
상단으로

티스토리툴바