묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
리트코드 177번 function 풀이중 case when 활용을 위한 서브쿼리 구문을 제출 시 검증에 통과되지 않도록 보강된 듯 하네요
리트코드 177번 function 풀이를 보면서 진행하는데,서브쿼리에 작성된 limit에 -1를 인자로 넣어서 추가 검증하다보니 제출이 되지 않는 듯 합니다.조건을 약간 수정하는 방식으로 컨텐츠 수정이 필요할 듯 합니다.
-
미해결실전! Querydsl
스칼라 서브쿼리 작성시 limit 관련
안녕하세요. Querydsl 이용한 select절 서브쿼리 사용시 질의사항 있어 글남깁니다. 스칼라 서브쿼리 작성 중에 limit를 걸어 하나만 출력해야 하는 로직이 있는데, 실제 쿼리 나가는것을 보니 limit가 적용이 안되더라구요. 혹시 이런 경우에 어떤 방식으로 처리하셨는지 궁금합니다 !
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
검색어 관련 질문입니다. (limit, offset, oreder) / pages/index.js PostCard key value
routes/posts.js에서 게시글을 불러올때 limit, offset, order 이 방법으로 게시글을 정해진 수 만큼 불러오는데 추후에 이 방법을 구글에서 검색해서 알고 싶다면 검색을 어떻게 하는게 좋을까요? 검색해본 것들입니다. nodejs limit nodejs limit offset nodejs limit order nodejs 게시글 10개씩 불러오기 이렇게 검색하면 대부분 sql문이나 해당강의 nodebird에 대해 나옵니다. 그리고 pages/index.js PostCard key 값으로 유니크한 값을 설정하고 싶은데 어떻게 하면 좋을까요? (key값이 중복되는 오류 문구가 뜹니다.) react_devtools_backend.js:2540 Warning: Encountered two children with the same key, `2`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — the behavior is unsupported and could change in a future version. [시도] post.createdAt, post.id, post.updateAt, post.userId
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
batch size 와 Limit 질문입니다
안녕하세요 영한님! 강의 재밌고 유익하게 잘 보고 있습니다. 토이 프로젝트를 진행하면서 Batch SIze 와 Limit 에 대한 궁금증이 생겨서 질문 드리게 되었습니다. # 명세 도메인을 대략적으로 설명 드리면 한 명의 사용자는 여러 게시글을 작성할 수 있고 각 게시글에는 여러 개의 댓글이 달릴 수 있습니다. 사용자 (Member) 1 -> 게시글 (Post) N -> 댓글 (Comment) M 제가 뽑고자 하는 데이터는 여러 사용자가 작성한 게시글과 댓글인데, 여기서 페이징을 적용하기 위해 limit 을 사용하려고 합니다. 여러 Member 가 작성한 Post 를 5 개만 뽑고 각 Post 에 달린 Comment 는 3 개만 뽑는 로직을 짜려고 합니다. default_batch_fetch_size 는 1000 으로 설정했습니다. # 질문 1. 먼저 Post 를 5 개 뽑아야 하는데 이런 경우 쿼리 자체에 Limit 을 거는 게 좋을까요? // (1) 직접 순회 List<Member> members = memberRepository.findAll(); // 편의를 위해 findAll 로 했습니다. 실제로는 조건이 있음!! List<Post> posts = members.stream() .map(Member::getPosts) .flatMap(Collection::stream) .limit(5L) .collect(Collectors.toList()); // (2) Repository 메서드의 IN + Limit 쿼리 사용 List<Member> members = memberRepository.findAll(); // 편의를 위해 findAll 로 했습니다. 실제로는 조건이 있음!! List<Post> posts = postRepository.findTop5ByMemberIn(members); (1) 번으로 할 때 배치 사이즈 설정이 적용되어 1 + N 문제는 발생하진 않지만 모든 Post 데이터를 다 끌어오게 됩니다. Fetch Join 도 Limit 쿼리가 제대로 적용되지 않아서 OutOfMemory 발생 위험이 있기 때문에 안쓰는 걸로 알고 있는데 (2) 번으로 하는 게 맞을까요? (2) 번으로 했을 시 우려되는 점은 만약 members 의 사이즈가 1000 이 넘어가면 IN 쿼리의 성능이 굉장히 떨어지지 않을까 걱정됩니다. Limit 를 걸어두었으니 괜찮을지 아니면 개발자가 직접 사이즈를 쪼개서 나누어서 IN 쿼리를 호출해야 할지.. 어느 방법이 맞을까요 2. 1번과 비슷한 질문인데 5 개의 Post 를 순회하면서 3 개의 Comment 씩 뽑으려고 할 때도 @OneToMany 컬렉션을 호출하는 것보다 쿼리를 직접 호출하는게 좋을까요? 1 번 질문의 답에 따라서 조금 다를 것 같은데 만약 쿼리를 직접 호출해야 한다면 Post -> Dto 구하는 과정에 넣지 말고 Service 에서 쿼리를 호출한 후 직접 넣어줘야 할까요? public class PostDto { // ... 자잘한 field 생략 public static PostDto of(Post post) { return PostDto.builder() .comment(post.getComments().stream().limit(3L)...) .build(); } } 현재는 위와 같이 Post Entity 만을 넘겨줘서 Dto 로 변환시켜 주고 있는데 만약 쿼리를 직접 호출하는게 좋다면 Service 로 옮겨서 작성하는지 아니면 BatchSize 와 Limit 을 동시에 사용하는 꿀팁이 있는지 궁금합니다 ! 3. 마지막으로 위의 Post, Comment 와 같이 데이터가 무한히 많아질 가능성이 있는 테이블을 다룰 때는 Batch Size 가 아닌 다른 방법을 사용하기도 할까요?