SQL Server 2008 의 희소 열 과 열 집합

4207 단어 SQL Server 2008
이것 은 두 개의 새로 추 가 된 특성 이다.
희소 열 에 대한 상세 한 소 개 는 참고 하 시기 바 랍 니 다 http://msdn.microsoft.com/zh-cn/library/cc280604.aspx
열 집 에 대한 상세 한 소 개 는 참고 하 시기 바 랍 니 다 http://msdn.microsoft.com/zh-cn/library/cc280521.aspx 
나의 총 결 은 아래 와 같다.
1. 희소 열 은 주로 빈 필드 에 대한 더 좋 은 저장 체 제 를 제공 하기 위해 공간 을 절약 할 수 있 지만 (구체 적 으로 말 하면 빈 값 을 차지 하지 않 을 때 공간 을 차지 하지 않 는 다) 성능 에 도 영향 을 줄 수 있다.그 러 니 저울질 해 야 한다.
희소 열 은 주로 장면 을 사용한다. 한 실 체 는 많은 속성 열 이 있 지만 많은 속성 이 부족 할 수 있다.이것 은 이전에 우 리 는 속성 집합 문제 라 고 불 렀 다.
희소 열 은 데이터 형식 이 아니 라 열의 속성 일 뿐이다.
2. 열 집합 은 모든 희소 열 을 정의 할 수 있 는 집합 이다.이것 은 XML 데이터 형식 입 니 다.여러 개의 희소 열 에 열 집합 을 정의 한다 면 이 열 에 대한 수정 은 이 열 을 직접 수정 할 수도 있 고 한꺼번에 열 집합 필드 를 수정 해서 완성 할 수도 있다.열 집합 필드 는 사실 계산 필드 이다.
다음은 예 하 나 를 보 겠 습 니 다.
우선 희소 열 을 어떻게 사용 하 는 지 살 펴 보 자.여기 서 관건 은 정 의 를 내 릴 때 SPARSE 키 워드 를 사용 하 는 거 예요.
USE AdventureWorks

GO



CREATE TABLE DocumentStore

(DocID int PRIMARY KEY,

Title varchar(200) NOT NULL,

ProductionSpecification varchar(20) SPARSE NULL, ProductionLocation smallint SPARSE NULL, MarketingSurveyGroup varchar(20) SPARSE NULL ) ;

GO

--          

INSERT DocumentStore(DocID, Title, ProductionSpecification, ProductionLocation)

VALUES (1, 'Tire Spec 1', 'AXZZ217', 27)

GO



INSERT DocumentStore(DocID, Title, MarketingSurveyGroup)

VALUES (2, 'Survey 2142', 'Men 25 - 35')

GO
 
USE AdventureWorks;

GO



CREATE TABLE DocumentStoreWithColumnSet

(DocID int PRIMARY KEY,

Title varchar(200) NOT NULL,

ProductionSpecification varchar(20) SPARSE NULL, ProductionLocation smallint SPARSE NULL, MarketingSurveyGroup varchar(20) SPARSE NULL, MarketingProgramID int SPARSE NULL, SpecialPurposeColumns XML COLUMN_SET FOR ALL_SPARSE_COLUMNS);--        ALL_SPARSE_COLUMNS     ,          

GO
--      ,             ,              
INSERT DocumentStoreWithColumnSet (DocID, Title, ProductionSpecification, ProductionLocation)

VALUES (1, 'Tire Spec 1', 'AXZZ217', 27)

GO



INSERT DocumentStoreWithColumnSet (DocID, Title, MarketingSurveyGroup)

VALUES (2, 'Survey 2142', 'Men 25 - 35')

GO

 
INSERT DocumentStoreWithColumnSet (DocID, Title, SpecialPurposeColumns)

VALUES (3, 'Tire Spec 2', '<ProductionSpecification>AXW9R411</ProductionSpecification><ProductionLocation>38</ProductionLocation>')

GO
     ,      SELECT *         ,              ,       
image 
   ,               ,           
SELECT DocID, Title, ProductionSpecification, ProductionLocation 

FROM DocumentStoreWithColumnSet

WHERE ProductionSpecification IS NOT NULL ;

image
업데이트 에 대해 서 는 삽입 과 마찬가지 로 두 가지 방식 이 모두 가능 하고 효과 가 같 습 니 다.

좋은 웹페이지 즐겨찾기