2012-06-07 2 views
2

테이블의 각 레코드 크기는 성능 매개 변수입니다. 즉, 레코드의 크기가 작 으면 SQL Server는 실제 하드에서 각 읽기에 더 많은 레코드를 가져옵니다.SQL Server에서 열을 분할 할 수 있습니까?

대부분의 쿼리에서 우리는 테이블의 모든 열을 사용하지 않으며 특정 쿼리에서만 일부 열을 사용할 수 있습니다. 각 테이블의 컬럼을 파티셔닝하여 성능을 향상시킬 수 있습니까?

SQL Server 2008 R2를 사용합니다.

감사합니다.

답변

3

실제 열 수준 분할은 열 기반 저장소 (Inside the SQL Server 2012 Columnstore Indexes 참조)와 함께 제공되지만 SQL Server 2012에서만 사용할 수 있으며 일반 SQL Server 응용 프로그램이 아닌 특정 BI 작업을 처리합니다.

행 지향 스토리지에서 수직 분할은 실제로 적절한 커버 인덱스를 설계하기위한 또 다른 이름입니다. 엔진에 대체 좁은 인덱스가있는 경우 가능한 경우 기본 테이블 대신 사용합니다.

마지막으로 수동으로 테이블을 splint하고 쿼리에서 수직 '샤드'를 조인 (또는 조인보기를 정의하는 것, 같은 일)하는 것은 일반적으로 좋지 않으며 거의 ​​도움이되지 않습니다.

1

현재 SQL Server 2008에서는 테이블을 가로로 분할 할 수 없습니다. 많은 수의 열이있는 경우 공통 키를 공유하는 수평 청크 테이블로 잘라낸 다음 업데이트 가능한보기로 스키닝하여 매우 넓은 하나의 표를 떠올리게해야합니다.

큰 열이 몇 개있는 경우 (예 : VARCHAR(1000)) 데이터를 고유 한 값 표로 정규화 할 수 있습니다.

0

no column partitioning 규칙의 한 가지 예외는 max (varchar (max))와 같이 선언 된 문자 열입니다.

이들은 별도의 데이터 페이지에 저장됩니다. 나는 컬럼이 쿼리에서 참조되지 않는 한이 페이지가 읽히지 않는다고 생각한다. 내가 틀렸다면 나는 더 많은 지식 사람들이 나를 바로 잡을 것이라고 확신한다.

관련 문제