테이블의 각 레코드 크기는 성능 매개 변수입니다. 즉, 레코드의 크기가 작 으면 SQL Server는 실제 하드에서 각 읽기에 더 많은 레코드를 가져옵니다.SQL Server에서 열을 분할 할 수 있습니까?
대부분의 쿼리에서 우리는 테이블의 모든 열을 사용하지 않으며 특정 쿼리에서만 일부 열을 사용할 수 있습니다. 각 테이블의 컬럼을 파티셔닝하여 성능을 향상시킬 수 있습니까?
SQL Server 2008 R2를 사용합니다.
감사합니다.
테이블의 각 레코드 크기는 성능 매개 변수입니다. 즉, 레코드의 크기가 작 으면 SQL Server는 실제 하드에서 각 읽기에 더 많은 레코드를 가져옵니다.SQL Server에서 열을 분할 할 수 있습니까?
대부분의 쿼리에서 우리는 테이블의 모든 열을 사용하지 않으며 특정 쿼리에서만 일부 열을 사용할 수 있습니다. 각 테이블의 컬럼을 파티셔닝하여 성능을 향상시킬 수 있습니까?
SQL Server 2008 R2를 사용합니다.
감사합니다.
실제 열 수준 분할은 열 기반 저장소 (Inside the SQL Server 2012 Columnstore Indexes 참조)와 함께 제공되지만 SQL Server 2012에서만 사용할 수 있으며 일반 SQL Server 응용 프로그램이 아닌 특정 BI 작업을 처리합니다.
행 지향 스토리지에서 수직 분할은 실제로 적절한 커버 인덱스를 설계하기위한 또 다른 이름입니다. 엔진에 대체 좁은 인덱스가있는 경우 가능한 경우 기본 테이블 대신 사용합니다.
마지막으로 수동으로 테이블을 splint하고 쿼리에서 수직 '샤드'를 조인 (또는 조인보기를 정의하는 것, 같은 일)하는 것은 일반적으로 좋지 않으며 거의 도움이되지 않습니다.
현재 SQL Server 2008에서는 테이블을 가로로 분할 할 수 없습니다. 많은 수의 열이있는 경우 공통 키를 공유하는 수평 청크 테이블로 잘라낸 다음 업데이트 가능한보기로 스키닝하여 매우 넓은 하나의 표를 떠올리게해야합니다.
큰 열이 몇 개있는 경우 (예 : VARCHAR(1000)
) 데이터를 고유 한 값 표로 정규화 할 수 있습니다.
no column partitioning 규칙의 한 가지 예외는 max (varchar (max))와 같이 선언 된 문자 열입니다.
이들은 별도의 데이터 페이지에 저장됩니다. 나는 컬럼이 쿼리에서 참조되지 않는 한이 페이지가 읽히지 않는다고 생각한다. 내가 틀렸다면 나는 더 많은 지식 사람들이 나를 바로 잡을 것이라고 확신한다.