JTDS&Mabatis 에서 MSSQL NVARCHAR 처리
MSSQL을 사용할 때 인덱스가 걸려있는 VARCHAR 컬럼데이터를 조회시 NVARCHAR로 데이터를 넘길경우 인덱스가 걸리지 않아 성능에 문제가 발생하는 사례가 존재한다. 하여 보통은 jtds 드라이버 설정시 sendStringParametersAsUnicode=false 값을 주어 유니코드 처리하지 않게 함으로서 VARCHAR로 처리 되도록 하여 해결을 하고 있다. 근데 문제는 VARCHAR 와 NVARCHAR 가 섞여있을 경우에는 어떻게 해야 하는가? 사실 이문제는 아래와 같이 풀면 해결이 될거라고 생각했다. 1) 드라이버에서는 유니코드를 사용하지 않음 처리. - sendStringParametersAsUnicode=false 2) mybatis mapper 에 jdbcType 을 부여 - #{column, jdbcType=NVARCHAR} 혹은 1)번을 부여하지 않고( default 는 sendStringParametersAsUnicode=true 이다. ) #{column, jdbcType=NVARCHAR} 와 #{column, jdbcType=VARCHAR} 를 명시해주면 되지 않을까? 라고 생각했었다. 하지만, 결론은 안된다는거... 그래서 jtds 드라이버 소스코드를 살펴 보았다. 역시...NVARCHAR 사용을 위한 setNString() 에서 아래와 같은 코드로 구현이 되어있었고, [ JtdsCallableStatement.java ] public void setNString(String parameterName, String value) ...