Closed leo0842 closed 1 year ago
Close #608
query dsl
복합 인덱스 복합 인덱스는 여러 컬럼을 묶어서 인덱스로 저장한다. 조건절에 여러 컬럼이 사용되거나 조건절, 그룹화에 사용되는 컬럼이 다른 경우에 인덱스를 탈 수 있도록 복합 인덱스를 설정한다. 순서가 존재하여 이를 잘 숙지해야 한다. 커버링 인덱스 조회를 위해 사용되는 컬럼(조회 프로젝션, 조건절, 그룹화 등)이 모두 인덱스로 등록되어 있을 때 빠르게 조회가 가능한 인덱스이다. Inno DB의 세컨더리 인덱스 저장 구조는 리프 노드에 데이터의 주소가 아닌 PK 값이 저장되어 있다. 이로 인해 데이터에 직접 접근하지 않고 인덱스만으로 조회가 가능하다.
복합 인덱스
커버링 인덱스
@Repository public class RoleEntityRepositoryImpl implements RoleEntityRepository { private List<Long> findRoleHistoryIdsGroupByAndOrderBy(Long roleId) { return jpaQueryFactory.select(roleHistory.id.max()) .from(roleHistory) .groupBy(roleHistory.date) .orderBy(roleHistory.date.desc()) .where(roleHistory.roleId.eq(roleId)) .fetch(); } private List<RoleHistory> findAllRoleHistory(List<Long> ids) { return jpaQueryFactory.selectFrom(roleHistory) .from(roleHistory) .where(roleHistory.id.in(ids)) .fetch(); } }
Close #608
배경 지식
상세 내용