Postgres 팁: "조인은 무료"라는 말은 사실이 아니지만 유용합니다. 비정규화하려는 충동을 억누르고, 사용자의 불편함 때문에 꼭 필요할 때만 실행하세요. 개발자들은 "더 빠르기 때문에" 비정규화를 권하겠지만, 실제 사용자가 불평하기 전까지는 항상 "안 됩니다"라고 답할 것입니다.
개발자들이 비정규화와 조인에 대해 논쟁하는 또 다른 이유는 쿼리 복잡성 때문입니다. 개발자들은 조인을 너무 많이 사용하지 않고도 더 깔끔하고 읽기 쉬운 쿼리를 작성하고 싶어 합니다. 이에 대한 답은 항상 "git gud"의 변형입니다. SQL을 배우세요. 절대 불가능해질 때까지 모든 것을 조인할 것입니다.
"그냥 조인만 사용하세요"는 @lisamahapatra가 저를 항상 놀리는 "조니즘" 중 하나입니다. 제가 데이터 모델을 논의하는 모든 회의에서 그 말을 하기 때문이죠. 제가 그 말을 할 거라는 건 모두가 알고 있습니다... 사실, 저를 꼬드기려는 것 같습니다.
@lisamahapatra 이 스레드는 제가 현재 속도 향상을 위해 비정규화를 진행 중이라는 사실에서 영감을 받았습니다. 문제의 테이블은 이제 충분히 크고, 데이터 모델이 더 이상 유동적이지 않다는 측면에서도 충분히 안정적이기 때문에, 전략적 비정규화를 통해 EXPLAIN ANALYZEa로 검증 가능한 결과를 얻을 수 있습니다.
@lisamahapatra 네, 데이터 모델이 안정적이고 실제로 성능 문제가 아니라 DX 문제라면 뷰가 훌륭합니다. 모델이 안정화되고 코드에서 조인을 작성하는 유연성이 더 이상 필요하지 않으면, 성능 향상을 위해 비정규화하거나 DX를 위해 뷰를 사용하는 것이 좋습니다.