본문 바로가기
프로그래머스/데이터분석 데브코스

프로그래머스 데이터분석 데브코스 4-4

by 포잉띠 2024. 3. 7.

SQL 효율적으로 짜기 / 실수, 불필요한 것 줄이기

1. 테이블을 집합으로 생각하기

  • 테이블을 집합으로 생각하기 = 최대한 작게 필터링 해서 쓰기 

2. *, % 사용 지양하기

  • Limit 걸고 조회하기
  • 파티션이 있는 테이블인지 확인하고 파티션을 필터 조건으로 걸고 조회하기
  • 컬럼이 많은 테이블 조회 시 SELECT * 지양할것
  • LIKE 사용 시 % 제한적으로 사용하기 // 해당 필드의 형태에 맞게 _ 사용하는 방향, 최대한 탐색이 길어지지 않게.

3. 데이터 타입 잘 확인하기

  • SQL은 묵시적 형변환을 하기에 형변환에 들어가는 자원을 아끼기 위해 데이터 타입 확인할것
  • where 절에서 왼쪽 컬럼에 함수 적용 지양하기 // where 절 사용으로 필터링 과정에서 함수가 적용되는 것 보다 필터링 이후 함수 적용하는것이 훨씬 빠르다. 

4. JOIN 사용 시 유의할 점

  • JOIN 하는 테이블 간 관계 고려하기 // 어느쪽 테이블이 더 큰지, 몇 개의 컬럼들이 합쳐지는지 등
  • 데이터에 중복이 있는지 확인하기 // SQL뿐만 아니라 시각화, 머신러닝에 사용할 때도 중복 유무가 결과값에 영향을 많이 줌. 중복을 허용한 결과가 필요한지 아닌지 구별해 내는것도 중요할듯.
  • 여러가지 쿼리 방식을 고려할것 // JOIN에도 종류가 많고 어떤 함수를 사용하는지, 어디에 사용하는지에 따라 결과가 같더라도 처리 속도 차이가 있기 때문.

5. 가독성 높이기

  • Sub query 보다는 With 구문 사용할 것. // Sub query 가독성이 매우 떨어져 차후 유지보수 등이 쉽지 않을 수 있음. 당장 최근만 해도 Sub query 들어간 쿼리문 보다가 머리가 터질 뻔 했다.
  • With절을 사용할 때, 각 블록 이름을 잘 지정하자 // 프로그래밍에서 변수명을 예쁘게 짓는것과 같은 원리. 그냥 a, b 이렇게 해버리면 그게 뭔지 알 수가 없음.
  • 쿼리가 복잡해 지면 중간중간 주석을 작성. // 위와 같음.

 

 

 

오늘 자 내용은 생각보다 가벼웠다. 

4-1 학습하고 여러가지 쿼리들을 보면서 왜이렇게 이해가 안될까 가독성이 왜이렇게 떨어질까 고민하고 해결방법을 찾았었는데, 원래 그런거였다.

Join, with 사용에 익숙해 지는것이 당장 SQL에서 첫 번째 목표이다.

join 이 꽤 파이가 큰 함수인 것 같고 그간 python 코드 짤 때 가독성이 좋았다고는 말을 못하기에 with로 좀 이름짓기 같은걸 예쁘게 해봐야겠다.