MyBatis
공통 쿼리 재사용을 고려한 랜덤 추출 쿼리 작성 방법 (Oracle + MyBatis)
공통 쿼리 재사용을 고려한 랜덤 추출 쿼리 작성 방법 (Oracle + MyBatis)
2025.03.23최근 프로젝트에서 조건에 맞는 카테고리 중 랜덤으로 하나씩 상품을 뽑고, 조건에 맞는 나머지 상품을 추가로 추출하여 총 n개를 만드는 쿼리를 작성할 일이 있었다. 단순히, union all 로 처리할 수 있지만, 중복 상품, 조건 필터링, MyBatis와의 연동 등을 고려하다 보니 쿼리가 점점 길어졌다. 이 글에서는 Oracle에서 중복을 피하면서 효율적인 쿼리를 작성하고, MyBatis XML에서 공통 쿼리를 재활용하는 방법을 소개한다. 처음 작성한 쿼리 처음에 간단하게 각각 하나씩 뽑고 UNION ALL 로 붙이면 될 줄 알았다. 하지만 이 방식은 조건에 맞는 데이터를 추출하면서 쿼리 중복과 중복된 결과 처리 문제가 발생했다.반복되는 UNION ALL 쿼리를 효율적으로 관리하고, MyBatis에서 ..