인덱스 설계를 목적으로 쿼리 리뷰를 받았는데 그냥 이날 털털털털 털렸음.
대략 추리자면 아래와 같다.
그리고
왜 이걸 WITH문으로 씀? 굳이?
다시 쿼리를 보니 내가 왜 이랬지? 생각밖에 안 들더라고.
일단 WITH문을 지나치게 남발하는 것은 좋지 않다. 직접 접근이 되지 않기 때문이다.
리뷰해주신 상사도 with 중독이었던 적이 있다고 하셨는데,
일단 그냥 select * from (쿼리)
식으로 처리할 수 있는 건 다 고치기로 함.
그리고 with랑 with recursive도 혼동하면 안된다.
이게 정말 재귀(recursive)가 필요해?
속도를 느리게 하더라도 생각 좀 더 하라는 지적받음.
그리고 쿼리 들여쓰기 말인데, 사람마다 차이가 있지만 부장급 시니어들의 쿼리는 정렬이 군대같이 칼같다.
내 쿼리는 지그재그로 읽어야 한다. 시니어들의 쿼리는 위에서 일직선 아래로 슉 읽힌다. 배워야겠다는 생각이 든 이유는 이 정렬이 에러찾는 시간을 크게 단축하기 때문이다!
쿼리 정렬할 때 tab 쓰면 빠따다. 무조건 space로 하나하나 맞추는 거지.
뭐 당장 이렇게는 못하더라도 일단 들여쓰기를 할 기준점을 하나 잡아보라는 조언을 들었다.
WHERE A.USER_ID = #{userID}
AND A.USER_NAME = #{userName}
SELECT U.USER_NAME
FROM USER U
JOIN ACT A
ON U.USER.ID = A.ACT_USER_ID
SELECT USER_ID
,USER_NAME
,USER_EMAIL
이런식으로 컬럼뒤에 ,를 붙이지 않고 다음 컬럼 앞에 붙이는 건데
특정 컬럼 주석처리 등을 할 때 에러날 확률을 줄인단다. 아직 적응을 하는 중이다.
그 외에도 많지만 결론은 시니어들 예시를 보고 정신사납게 읽히지 않도록 개선하는 것이 최종적인 목표 되시겠다. 그리고 일단 쿼리 내용부터 잘 좀 짜고;;