[Typeorm] take skip VS limit offset

김지원·2022년 9월 10일
0

환경

  • 프레임워크: nestjs
  • orm: typeorm

개요

클라이언트가 페이징 처리를 할 때 백엔드는 분명히 페이징 처리를 해야될 때가 온다.
그리고 orm을 typeorm 쓰고 있는 개발자라면 take를 쓸 것인지 limit을 쓸 것인지 고민해야될 때가 온다.

친절하게도 typeorm에서 처리하는 방법을 제시하고 있다.

내용

typeorm을 보면 limit에서는 join을 할 경우 원하는 결과값이 나오지 않을 수 있다고 나와있다.

이유가 뭘까..?

https://stackoverflow.com/questions/68468192/difference-between-limit-and-take-in-typeorm

stackoverflow에서 찾아볼 수 있었다.

내가 이해한 바로는

limit은 select 당시에 limit을 먼저 실행한 후 join을 실행하기 때문에 원하는 값이 나오지 않는다는 것이다.

반면에 take은 먼저 join까지 적용하여 모든 select를 한 후에 mapping하여 페이징 처리를 한다는 것이 다른 점이였다.

결론

join이 없으면 limit을 사용하는 것이 효율적이지만 join이 있는 경우에는 take를 사용하자~

typeorm is trash...

profile
backend-developer

0개의 댓글