2010-07-22 5 views
0

내 데이터베이스 테이블에 필터링 된 고유 인덱스를 만들었습니다. 나는 내가 위의 기능을 켜면 내 연결SQL Server 2008의 필터링 된 인덱스

SET CONCAT_NULL_YIELDS_NULL ON 
SET ANSI_PADDING ON 
SET ANSI_WARNINGS ON 

에 다음과 같은 일련의 동작을 설정해야 asp.net에서 해당 테이블에 어떤 작업을 수행하려는 경우 내 연구에 따르면, 어떤 효과가있을 것인가? 어떤 문제가 발생 했습니까? 다른 더 좋은 옵션이 있습니까?

미리 감사드립니다.

답변

2

색인을 제대로 사용하는 데 필요한 세 가지 항목이 없습니다. 인덱스가 사용되는지 여부를 결정하는 가장 큰 단일 요소는 쿼리 작성이며 쿼리 최적화 프로그램 엔진에 의한 평가입니다.

그러나,의는 세 가지의 사용을 확인하자, 당신이 가져온 것과 계속하기 : @FirstName가 NULL 인 경우의이 문장을 SET @Name = @FirstName + ' ' + @LastName

보자

ON

SET의 CONCAT_NULL_YIELDS_NULL을 또는 @LastName이 NULL이면 @Name은 NULL입니다. 이 동작을 원하지 않는 경우 - 당신이 미래에 더 이상 사용되지 않습니다

ON 다음 SET CONCAT_NULL_YIELDS_NULL ON

SET의 ANSI_PADDING, 빈 문자열처럼 취급 할 NULL합니다. SQL Server에서는 기본적으로 ON으로 설정됩니다. 사실 최신 버전의 SQL Server에서는 OFF로 설정할 수 없습니다.

이 값은 varchar 열의 데이터 저장에 영향을줍니다. 예를 들어 켜기로 설정하면 후행 공백이 제거되고 후행 공백이 제거 된 후 TEST 값이 저장됩니다. VarBinary 열에 후행 0에도 동일한 작업이 적용됩니다. 이 그룹화 및 합계입니다

ON

SET의 ANSI_WARNINGS. 집계 함수에 NULL 값이 있고 NULL 값이 있음을 알고 싶으면이 값을 ON으로 설정하십시오. 집계에서 NULL이 제거되었다는 사실을 신경 쓰지 않는다면 이것을 OFF로 바꾸십시오.