더북(TheBook)

SQL Server

DB2와 비슷하게 SQL Server는 인덱스에 널 값 입력이 가능하고 모든 널 값을 동일하다고 여긴다. 기본키 컬럼에는 NULL을 저장하지 못하며, 유일키 컬럼에는 널 값을 하나만 저장할 수 있다.

인덱스에서 널 값을 제외하려면 필터링된 인덱스(Filtered Index)를 만들어야 하는데, 방법은 코드 2-4와 같다.

코드 2-4 SQL Server에서 필터링된 인덱스에 널 값 제외 처리

CREATE INDEX CustPhone_IDX

  ON Customers (CustPhoneNumber)

  WHERE CustPhoneNumber IS NOT NULL;


 

쿼리에서 CustPhoneNumber 컬럼에 IS NULL 조건을 제시하면 SQL Server는 해당 조건 검색을 수행할 때 이 필터링된 인덱스를 사용하지 않을 것이다. SQL Server는 빈 VARCHAR 타입 문자열을 NULL로 변환하지 않는다. 코드 2-4의 필터링된 인덱스 예제에서는 CustPhoneNumber 컬럼에 빈 문자열이 포함되어 있어도 인덱스를 만들 수 있는데, 빈 문자열은 NULL이 아니기 때문이다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.