로딩
요청 처리 중입니다...

SQL Server JDBC Driver(MSSQL)에서의 NVARCHAR, VARCHAR

 SQL Server JDBC  Driver(MSSQL)에서의 NVARCHAR,  VARCHAR

MSSQL은 DataType에 대한 우선순위가 있습니다. nvarchar가 varchar보다 우선순위가 높기 때문에 index가 있는 varchar 컬럼에 nvarchar parameter가 mapping 된 경우, 우선순위에 따라 varchar 컬럼이 모두 nvarchar로 형변환이 일어난 후 조건을 비교하게 됩니다. 따라서 index가 무시됩니다.

예를 들어 아래와 같은 query가 있다고 가정합니다. 이 경우 WHERE 절을 만들기 위한 string 타입의 parameter는 SQL Server JDBC Driver에 의해 nvarchar로 mapping되어 query를 보내게 됩니다.

그럼 우선 순위에 의해 TB_USER 테이블의 모든 USER_NAME 컬럼들이 전부 nvarchar로 형변환이 일어납니다. 형변환이 일어나기 때문에 원래 설정된 index가..........