연산자로 데이터 형식이 다른 두 식을 결합할 경우 데이터 형식 우선 순위 규칙에 따라
우선 순위가 낮은 데이터 형식이 우선 순위가 높은 데이터 형식으로 변환된다.
이때는 변환은 암시적으로 지원 되지 않으면 오류가 발생한다.
이 우선 순위는 우리가 자주 사용하는 프로시저에서 잘못 작성을 하게 되면 성능을 저하시키는 요인이 될 수 있다.
아래와 같이 테이블과 해당 프로시져를 생성했다고 한다면 이유는 TEST.PNAME의 필드가 VARCHAR인데 검색에 사용된 파라매터는 NVARCHAR이기 때문이다.
VARCHAR는 NVARCHAR보다 우선순위가 낮기 때문에 WHERE 구문 왼쪽 조건에 대해 CONVERT가 일어난다.
데이터 행이 적으면 괜찮을지 몰라도 이 행이 많이지면 질 수록 성능에 대한 부하는 점점 커지게 될 것이다.
그리고 ...MSSQL2005에 해당되는 내용이다. 위와 같이 정의 되어서 사용되었다고 하면 @TXT3의 형식은 NVARCHAR(MAX)를 유지할까?
아니다. @TXT3이 NVARCHAR(MAX)로 되어 있다고 해도 NVARCHAR로 선언된 값들과 (+)연산되면서
@TXT3은 NVARCHAR의 최대값으로 자동 설정이 되어 버린다.
NVARCHAR(MAX)로 유지해서 사용하려면 아래와 같이 변수의 선언을 모두 NVARCHAR(MAX)로 해야 한다.
우선 순위가 낮은 데이터 형식이 우선 순위가 높은 데이터 형식으로 변환된다.
이때는 변환은 암시적으로 지원 되지 않으면 오류가 발생한다.
이 우선 순위는 우리가 자주 사용하는 프로시저에서 잘못 작성을 하게 되면 성능을 저하시키는 요인이 될 수 있다.
아래와 같이 테이블과 해당 프로시져를 생성했다고 한다면 이유는 TEST.PNAME의 필드가 VARCHAR인데 검색에 사용된 파라매터는 NVARCHAR이기 때문이다.
VARCHAR는 NVARCHAR보다 우선순위가 낮기 때문에 WHERE 구문 왼쪽 조건에 대해 CONVERT가 일어난다.
데이터 행이 적으면 괜찮을지 몰라도 이 행이 많이지면 질 수록 성능에 대한 부하는 점점 커지게 될 것이다.
그리고 ...MSSQL2005에 해당되는 내용이다. 위와 같이 정의 되어서 사용되었다고 하면 @TXT3의 형식은 NVARCHAR(MAX)를 유지할까?
아니다. @TXT3이 NVARCHAR(MAX)로 되어 있다고 해도 NVARCHAR로 선언된 값들과 (+)연산되면서
@TXT3은 NVARCHAR의 최대값으로 자동 설정이 되어 버린다.
NVARCHAR(MAX)로 유지해서 사용하려면 아래와 같이 변수의 선언을 모두 NVARCHAR(MAX)로 해야 한다.
'이전' 카테고리의 다른 글
| 데이터 형식 우선 순위(T-SQL) (0) | 2010/02/26 |
|---|---|
| 마스터 페이지에 있는 컨텐츠페이지에서 원하는 컨트롤을 찾아보자 (0) | 2010/02/24 |
| equal to 작업에서의"Korean_Wansung_CS_AS"과(와) "Korean_Wansung_CI_AS" 간의 데이터 정렬 충돌을 해결할 수 없습니다. (0) | 2010/02/24 |
| SecurityPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' 형식의 사용 권한을 요청하지 못했습니다. (0) | 2010/02/19 |
| HTML DOM의 예제 및 간략 설명 (0) | 2010/02/17 |
| jQuery, jQuery UI를 이용한 간단한 Progress 프로그램 만들기 (0) | 2010/02/13 |