강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của sonstein
sonstein

câu hỏi đã được viết

Học thiết kế hệ thống quy mô lớn thông qua việc tự tay xây dựng với Spring Boot - Bảng tin

findByPath에서 articleId로도 검색을 해야 할 것 같아요.

Đã giải quyết

Viết

·

58

0

  • 학습 관련 질문을 최대한 상세히 남겨주세요!

  • 고민 과정도 같이 나열해주셔도 좋습니다.

  • 먼저 유사한 질문이 있었는지 검색해보세요.

  • 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

@Query("select c from CommentV2 c where c.commentPath.path = :path")
Optional<CommentV2> findByPath(@Param("path") String path);

위와 같은 방식으로 조회를 하면 인덱스 서치가 되지 않는 것 아닌가요?

아래와 같은 방법으로 해야 할 것 같은데..

@Query("select c from CommentV2 c where c.articleId = :articleId and c.commentPath.path = :path")
Optional<CommentV2> findByPath(
  @Param("articleId") Long articleId,
  @Param("path") String path);

답변 부탁 드립니다.

javamysqlspring-bootkafkaredis

Câu trả lời 3

1

kuke님의 프로필 이미지
kuke
Người chia sẻ kiến thức

주주파파님, 안녕하세요!

아이고 말씀하신대로 findByPath가 아니라 articleId도 쿼리에 포함되어야 합니다.

이 부분 놓쳐졌었네요 ㅠ 제보 감사드리고 추후 수정해두도록 하겠습니다!

0

sonstein님의 프로필 이미지
sonstein
Người đặt câu hỏi

해당 영상에 대한 수정이 필요해 보입니다.

0

안녕하세요, 인프런 AI 인턴입니다. 주주파파님.

질문해 주신 내용은 JPA에서 효율적인 쿼리 작성에 관한 것입니다. 두 쿼리의 차이를 이해하기 위해 간략한 설명을 드리겠습니다.

쿼리 성능 및 인덱스 사용

  1. 기존 쿼리 (@Query("select c from CommentV2 c where c.commentPath.path = :path")):

    • 이 쿼리는 CommentV2 엔티티에서 commentPath.path 칼럼 하나만 조건으로 사용합니다.
    • 만약 데이터베이스가 commentPath.path 에 대한 인덱스를 가지고 있다면, 인덱스를 사용할 수 있지만, 여러 조건들을 추가하면 더 정확하고 실행 속도를 높이는 데 도움이 될 수 있습니다.
  2. 개선된 쿼리 (@Query("select c from CommentV2 c where c.articleId = :articleId and c.commentPath.path = :path")):

    • articleIdcommentPath.path 두 칼럼을 조합하여 조건으로 사용합니다.
    • 두 개 이상의 조건을 사용하여 검색하는 경우, 인덱스를 더 효과적으로 활용할 수 있으며, 이는 특히 데이터 양이 많아질수록 성능을 크게 향상시킬 수 있습니다.
    • 데이터베이스에서 articleIdcommentPath.path의 결합 인덱스를 갖춘 경우, 쿼리 성능을 더욱 최적화할 수 있습니다.

따라서, articleId를 추가하여 조건을 더 명확하게 하는 것은 데이터베이스 쿼리의 성능을 향상시키는 좋은 방법일 수 있으며, 이는 검색 효율성을 높이고 불필요한 풀 테이블 스캔을 줄이는 데 큰 도움이 됩니다.

관련하여 유사한 사례나 인덱스 설정의 중요성에 대해 더 알아보고 싶으시다면, 아래 유사한 질문 링크를 참고해 보세요:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

Hình ảnh hồ sơ của sonstein
sonstein

câu hỏi đã được viết

Đặt câu hỏi