일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 오라클 디비
- JVM
- spring
- 알고리즘
- oracle
- 학점
- 오라클
- 프로젝트
- 리눅스
- 유사코드
- jsp
- SQL
- 초대장
- 백준 알고리즘
- 자바
- 운영체제
- smart cast
- K6
- dynamic query
- 자바 프로젝트
- hyperledger
- MongoDB
- 티스토리
- 파이썬
- 문법 정리
- 파이썬 소스
- auto configure
- resilience4j
- c#
- gradle
Archives
- Today
- Total
모종닷컴
N+1 Selects 문제 본문
반응형
N+1 Selects 문제
N+1 문제란 ?
조회를 위해 select 쿼리(1번)를 날렸다가 관련 컬럼을 얻기 위해 N번의 셀렉트(N번)를 하게 되는 상황.
같은 결과를 낼지라도, 그 쿼리를 수행하는데에 있어 몇 번의 쿼리를 해야하는지에 따라 성능이 달라진다.
마이바티스의 association에서 Nested Select, Nested Results를 예로 들 수 있다.
Nested Select 는 결과에서 다시 한번 참조를 하기 위해 다음 Select구문을 실행하는 것을 말하고, Nested Results는 조인된 결과물에 대해 반복적으로 사용하여 결과를 맵핑하는 방법을 말한다.
예시를 보도록 하겠다. (참고 : http://www.mybatis.org/mybatis-3/ko/sqlmap-xml.html#insert_update_and_delete)
위에서 만약 블로그와 저자와의 관계가 (1:N) 상황이라면 N+1의 셀렉트가 발생
하게 된다. 각각의 author_id를 위해 셀렉트를 실행한다
하지만 위와 같이 조인된 결과에 대하여 맵핑을 하게 되면 위와 같이 N+1번의 호출이 일어나지 않게 된다.
반응형
'Programming > 데이터베이스' 카테고리의 다른 글
MySQL 스레딩 구조 (0) | 2022.07.19 |
---|---|
MySQL 아키텍처 (0) | 2022.07.19 |
마이바티스 - insert할 때 주의사항 (3) | 2018.11.13 |
Transaction Isolation Level (0) | 2018.11.08 |
오라클xe 부팅시 자동실행 끄기 (0) | 2018.07.16 |