[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
  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

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

티스토리툴바