java - Mybatis 관련 쿼리
ringa_lee
ringa_lee 2017-05-27 17:41:50
0
1
647

실제 개발에서 Mybatis 일대다 및 다대다 관련 쿼리는 reultMap 참조, javaType 참조 또는 선택 참조 중 어느 것이 더 나은 성능을 발휘합니까?
select를 사용한 지연 로딩이 쿼리 속도와 성능을 향상시키나요?

ringa_lee
ringa_lee

ringa_lee

모든 응답(1)
漂亮男人

mybatis에는 일대다 상황을 처리하기 위한 세 가지 솔루션이 있습니다:

  1. 쿼리할 때 하위 테이블에 가입한 다음 mybatis가 이를 어셈블하도록 하세요

  2. 쿼리할 때 하위 테이블을 조인하지 말고 선택을 시작하여 하위 테이블 데이터를 캡처하세요

  3. 크롤링 타이밍을 지연시키기 위해 fetchType=lazy를 사용하는 것을 제외하면 두 번째와 유사합니다

이 세 가지 옵션에는 각각 고유한 문제가 있습니다.

  1. 첫 번째 솔루션에는 두 가지 결함이 있습니다. 1) 페이징 쿼리를 수행할 때 부정확합니다. 2) 관련 하위 테이블이 많으면 데카르트 곱이 매우 커집니다

  2. 두 번째 옵션에는 1+N 쿼리가 포함되며 시작된 SQL 수가 매우 무서울 것입니다

  3. 세 번째 솔루션은 첫 번째 쿼리의 효율성을 향상시키는 것으로 보이지만 루프에서 게으른 속성을 얻으면 두 번째 솔루션과 차이가 없습니다

따라서 성능 요구 사항이 있는 경우 일대다 컬렉션을 직접 조립해야 합니다. 방법은 기본 테이블의 ID를 수집하고 일회성 쿼리를 시작하여 모든 하위 테이블의 데이터를 캡처하는 것입니다. 그런 다음 수동 조립. 이런 방식으로 시작된 쿼리 수는 1+1입니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!