Jiwoong Jang
20
2022-05-13 10:01:18
1
43

PreparedStatement mybatis 다이나믹 쿼리 캐시 관련 질문


안녕하세요. PreparedStatement 캐시 관련하여 질문이 있습니다!

mybatis 매퍼 내에서 #{} 을 이용한 변수 바인딩 시 PreparedStatement 를 사용한다고 알고 있습니다!

해당 PreparedStatement 사용 시 동일 쿼리에 대해 캐시로 저장하여 성능을 향상시킨다고 알고 있습니다만, 해당 캐시로 저장하는 부분에서 예를 들면

SELECT A,B

FROM TABLE 1 A

<if test="조건1 입력 시">

LEFT OUTER JOIN TABLE2 B

   ON A.컬럼1 = b.컬럼1

</if>

WHERE 1=1

      AND A.컬럼 =  내용

<if test="조건1 입력 시">

      AND b.컬럼2 = 내용

</if>

과 같이 있을 때 조건1을 입력했을 떄와 입력하지 않았을 때 실행 쿼리가 달라지게 됩니다만, PreparedStatment 에 캐시로 저장될 때는 다이나믹 쿼리를 포함하여 둘을 동일한 쿼리로 인식하는 것인지 혹시 아시는 분 계실까 하여 질문합니다.. 

감사합니다!

0
  • 답변 1

  • kenu
    61k
    2022-05-13 10:11:38

    DB 쪽의 캐시 알고리즘에 따라 다를 것입니다.


  • 로그인을 하시면 답변을 등록할 수 있습니다.