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로 좀 이름짓기 같은걸 예쁘게 해봐야겠다.
'프로그래머스 > 데이터분석 데브코스' 카테고리의 다른 글
프로그래머스 데이터분석 데브코스 6-1 (0) | 2024.03.18 |
---|---|
프로그래머스 데이터분석 데브코스 4-5 (0) | 2024.03.08 |
프로그래머스 데이터분석 데브코스 4-3 (0) | 2024.03.06 |
프로그래머스 데이터분석 데브코스 4-2 (0) | 2024.03.05 |
프로그래머스 데이터분석 데브코스 4-1 (0) | 2024.03.04 |