[SQL, DB] 너도 WITH문 중독이구나? + 쿼리 정렬에 tab을 쓰지 않는다.

jinvicky·2024년 8월 12일
0

Developer-Story

목록 보기
2/5
post-thumbnail

인덱스 설계를 목적으로 쿼리 리뷰를 받았는데 그냥 이날 털털털털 털렸음.
대략 추리자면 아래와 같다.

  • where, on 조건절이 너무 구멍이 많았음.
    꼭 필요한 조건이 누락되어 있었다.
  • 인덱스 설계하면서 조건절 컬럼 순서 고쳐야 함.

그리고

왜 이걸 WITH문으로 씀? 굳이?

다시 쿼리를 보니 내가 왜 이랬지? 생각밖에 안 들더라고.

  • 깔끔해 보이고 싶어서 그랬음 (착각임. 그렇게 차이 없음)
  • 원하는 결과 set을 만들고 거기에서 다시 조건절로 데이터를 추출할 때
    초보라서 어떻게 하지? 어떡하지? 이러다가 with문으로 무지성 박아버렸음

일단 WITH문을 지나치게 남발하는 것은 좋지 않다. 직접 접근이 되지 않기 때문이다.

리뷰해주신 상사도 with 중독이었던 적이 있다고 하셨는데,
일단 그냥 select * from (쿼리) 식으로 처리할 수 있는 건 다 고치기로 함.

그리고 with랑 with recursive도 혼동하면 안된다.

이게 정말 재귀(recursive)가 필요해?

속도를 느리게 하더라도 생각 좀 더 하라는 지적받음.

그리고 쿼리 들여쓰기 말인데, 사람마다 차이가 있지만 부장급 시니어들의 쿼리는 정렬이 군대같이 칼같다.
내 쿼리는 지그재그로 읽어야 한다. 시니어들의 쿼리는 위에서 일직선 아래로 슉 읽힌다. 배워야겠다는 생각이 든 이유는 이 정렬이 에러찾는 시간을 크게 단축하기 때문이다!

쿼리 정렬할 때 tab 쓰면 빠따다. 무조건 space로 하나하나 맞추는 거지.

뭐 당장 이렇게는 못하더라도 일단 들여쓰기를 할 기준점을 하나 잡아보라는 조언을 들었다.

  • = 을 공간을 주어 동일하게 맞춰보자.
WHERE A.USER_ID 	= #{userID}
  AND A.USER_NAME   = #{userName}
  • select, from, join 키워드도 기준점을 잡아서 맞춘다. (내가 생각한 예시임)
	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

이런식으로 컬럼뒤에 ,를 붙이지 않고 다음 컬럼 앞에 붙이는 건데
특정 컬럼 주석처리 등을 할 때 에러날 확률을 줄인단다. 아직 적응을 하는 중이다.

그 외에도 많지만 결론은 시니어들 예시를 보고 정신사납게 읽히지 않도록 개선하는 것이 최종적인 목표 되시겠다. 그리고 일단 쿼리 내용부터 잘 좀 짜고;;

profile
Front-End와 Back-End 경험, 지식을 공유합니다.

0개의 댓글