Java · Spring · Database
[자바/스프링] JDBC 이슈 해결
2023. 6. 15.
- 문제: SQL 서버(SQL Server) 데이터베이스에서 기본키가
VARCHAR타입인 테이블의 특정 기본키 컬럼 값에 대한 데이터 조회 시 쿼리 속도가 느리다. - 원인: 기본적으로
sendStringParametersAsUnicode연결 속성이true이다. - 내용: SQL 서버는 연결 속성 중
sendStringParametersAsUnicode속성이true일 경우 문자열 파라미터를 유니코드 형식으로 서버에 보내며,false일 경우 유니코드가 아닌 ASCII/MBCS 형식으로 서버에 보낸다. SQL 서버는 기본적으로sendStringParametersAsUnicode속성이true이므로 문자열 타입의 파라미터를NVARCHAR로 보낸다. 이 경우 제공된NVARCHAR타입의 문자열 파라미터 값과 실제VARCHAR타입의 컬럼 값 사이에 암시적 타입 캐스팅(implicit type casting)이 일어나게 되며 해당 컬럼에 설정된 인덱스가 사용되지 않게 된다. 이는 애플리케이션 코드 상에서 바인딩 파라미터 값을 명시적으로VARCHAR타입으로 지정하는 경우에도 마찬가지이다. - 해결:
sendStringParametersAsUnicode속성을false로 설정한다. - 참고