SQL Server 데이터베이스에서 '일반적인'사용 규칙을 따르지 않고 클러스터 된 인덱스와 관련된 몇 가지 조언을 찾고있는 고유 한 테이블이 있습니다.SQL Server "Write Once"테이블 클러스터 된 인덱스
이것은 작성된 예제이지만 실제 데이터를 매우 자세히 설명합니다.
이 테이블에는 다른 테이블의 외래 키인 3 열 기본 키와 관련 데이터가 들어있는 네 번째 필드가 있습니다. 예를 들어, 테이블이 같다고 가정 해 봅시다 :
CREATE TABLE [dbo].[WordCountsForPage](
[AuthorID] [int] NOT NULL,
[BookID] [int] NOT NULL,
[PageNumber] [int] NOT NULL,
[WordCount] [int] NOT NULL
)
그래서, 우리는 고유 한 데이터가 네 번째 필드 인으로, 다소 계층 기본 키를 가지고있다.
실제 응용 프로그램에는 총 28 억 개의 가능한 레코드가 있지만 그게 전부입니다. 데이터는 시간이 지남에 따라 계산되므로 즉석에서 만들어지며 실제적으로 해당 레코드의 1/4 만 실제로 계산됩니다. 연산은 값 비싼 연산이기 때문에 DB에 저장되며 각 고유 조합에 대해 한 번만 수행하려고합니다.
오늘 데이터는 분당 수천 번 읽히지 만, (적어도 지금은) 테이블이 자체적으로 채워지면서 분당 수백 개의 삽입이 있습니다 (그리고 이것은 꽤 오랫동안 계속 될 것입니다). 모든 삽입물 (오늘)에 대해 10 개의 읽기가 있다고 말합니다.
클러스터 된 인덱스로 인해 모든 삽입에서 성능이 저하되는지 궁금합니다.
테이블이 이면 결국이 읽기 전용이되므로 클러스터 된 인덱스는 "장기적으로"의미가 있지만 거기에 도달하는 데는 약간의 시간이 걸립니다.
무거운 삽입 기간 동안 인덱스를 클러스터되지 않은 상태로 만들 수 있고 테이블이 채워지면서 클러스터로 변경한다고 가정합니다. 그러나 크로스 오버 포인트가 언제 결정되는지 어떻게 알 수 있습니까? 앞으로 나 자신이 '시간이왔다')?
내가 정말로 필요로하는 것은 미래에 어떤 불가사의 한 시간에 클러스터되지 않은 상태에서 클러스터 된 상태로 전환되는 전환 가능한 색인입니다.
어떻게 처리할까요?
감사합니다. 예, 저는 실제로이 기사를 읽기 전에 여기에서 읽었습니다. 문제는 색인이 "계속 증가"하지 않는다는 것입니다. 데이터가 테이블에 들어오는 순서는 없습니다. – Flipster
안녕하세요. 나는 그 반응에 감사한다. 나는 어느 쪽이든 성능상의 문제가 없으므로, 귀하의 응답을 여기에서 가장 좋은 것으로 받아들이고 있습니다 (윙크). 감사! – Flipster