안녕하세요.
아래 DB전문가님들 서버개발을 아웃소싱했는데요.
아래 쿼리가 기본적으로 잘 짜여진 것인지 궁금합니다.!!
1. Select 항목이 중복되네요? 한번만 써야 할 듯 하구요.
, u.id AS userId
, u.id AS UserId
2. 불필요한 인라인뷰는 제거하는게 좋습니다.
- 변경전 : JOIN (SELECT * FROM PostMember WHERE 1 = 1) AS pm
- 변경후 : JOIN PostMember pm
3. (카운트 서브쿼리) = 1 조건은
- EXISTS 로 바꾸는게 좋은데
- 이미 해당 테이블과 조인하고 있으므로 불필요한 조건입니다.
4. 조건의 위치는
- 조인조건이 아닌 상수조건은 ON 절 보다는 WHERE 절에 적어주는게 좋습니다.
5. 컬럼 명시할 때
- 컬럼명만 달랑 적으면 어느 테이블의 컬럼인지 알 수 없습니다.
- 앞에 테이블명(또는 테이블 알리아스). 을 적어 주는게 좋습니다.
- 알리아스 누락 항목들 : img, format, deletedAt, content
6. 불필료한 괄호 사용은
- 줄이는게 좋구요.
7. 쿼리 작성시 줄바꿈 해주는게 가독성이 좋습니다.
- select 리스트는 컴마 단위로 줄바꿈
- 조건절 리스트는 AND 단위로 줄바꿈
8. 잘못된 그룹바이 구문 <- (이 부분이 가장 중요한 듯 합니다.)
- 표준에 어긋나는 그룹바이 구문입니다.
- MySQL 에서는 옵션에 따라 정상 동작하기도 하지만. 추천하지 않습니다.
- 올바른 구문을 사용해야 합니다.
9. 튜닝을 논하기 전에
- 올바른 쿼리인지? 부터 살펴보셔야 합니다.
질문글은 왜 수정하셨는지.. 그러실거면 여기 왜 올리셨나요?