약 80 개의 열이있는 비정규 화 된 테이블이 있고 1 개월에 약 1,000 만 행 (약 5GB)의 비율로 증가한다고 가정합니다. 현재 3 1/2 년의 데이터 (~ 400M 행, ~ 200GB)가 있습니다. 비정규 화 된 테이블에서 비 스칼라 집계의 성능을 향상시키는 방법
우리는 우리가 테이블을 쿼리 할 때 때문에, 우리가 항상 가지고 ... 우리의 기본 키의 역할을 다음과 같은 열을 테이블에서 데이터를 검색에 가장 적합한에 클러스터 된 인덱스 ...[FileDate] ASC,
[Region] ASC,
[KeyValue1] ASC,
[KeyValue2] ASC
를 만들 전체 기본 키
이러한 쿼리는 항상 클러스터 된 인덱스 검색을 수행하므로 매우 빠르며 조각화는 최소로 유지됩니다. 그러나, 우리는이 클러스터되지 않은 만드는 것입니다에 "최고"솔루션은 내가 올 수 즉
SELECT
[Region]
, MAX([FileDate]) AS [FileDate]
FROM
HugeTable
GROUP BY
[Region]
, 보고서 일반적으로, 우리는 모든 지역에 대한 가장 최근의 FileDate을 얻을하려는 상황을해야합니까 지역 색인. 로드하는 동안 테이블에 추가 삽입을 의미하지만 히트는 최소가 아닙니다 (하루에 4 번로드하므로로드 당 추가 인덱스 삽입이 100,000 개 미만입니다). 테이블도 FileDate에 의해 파티셔닝되기 때문에, 쿼리에 대한 결과는 충분히 빠르게 돌아옵니다 (200ms 정도). 그리고 그 결과 세트는 다음로드 때까지 캐시됩니다.
그러나 나는 데이터웨어 하우징 경험이 많은 사람이 어떤 이유로 최적의 솔루션을 갖고 있다고 생각합니다.
원래 질문에 오타가 있었습니까? 실제로 클러스터되지 않은 추가 색인보다 더 나은 것을 생각할 수 없었습니다. 보람있는 제품을 만들기 위해서는 너무 많은 사전 처리 또는 후 처리가 필요합니다. –