2012-06-18 2 views
1

로 정의 상당히 높은 트래픽 테이블의 최근 검토는 다음과 같습니다이 색인은 중복되어 있습니까?

CREATE NONCLUSTERED INDEX [i1] ON [dbo].[SomeTable] 
(
    [SomeId] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 

- 및 -

CREATE NONCLUSTERED INDEX [i2] ON [dbo].[SomeTable] 
(
    [SomeId] ASC, 
    [OtherId] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 

이 지역은되지 않습니다 :

CREATE TABLE [dbo].[SomeTable](
    [Id] [bigint] IDENTITY(1,1) NOT NULL, 
    [SomeId] [bigint] NOT NULL, 
    [Time] [time](0) NOT NULL, 
    [InsertTime] [datetime] NOT NULL, 
    [SequenceNumber] [int] NOT NULL, 
    [OtherId] [int] NULL, 
CONSTRAINT [PK_Tracks] PRIMARY KEY CLUSTERED 
(
    [Id] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
) ON [PRIMARY] 

는 다음 인덱스 정의를 보여 정말 내 힘,하지만 인덱스 i1 불필요한가요?

+0

클러스터 된 인덱스 키와 데이터 유형을 포함하는 테이블 정의? 첫 번째 것은 조금 더 좁기 때문에'OtherId'가 매우 넓 으면 선호 될 수 있습니다. 다른 방법으로는 'OtherId'가 CI 키의 일부라면 어쨌든 첫 번째 NCI 키의 숨겨진 부분이기도합니다. –

+2

나에게 불필요 해 보인다.'[SomeId]'는'[i2]'의 선두 칼럼이며'[i1]'과 같은 쿼리에 효과적으로 사용될 수있다. – a1ex07

+0

@MartinSmith : done – spender

답변

1

예, 그것은 중복입니다. 누군가 기존 색인이 중복되는지 여부를 검토하지 않고 새 색인을 추가 할 때 이런 상황이 자주 발생합니다.

당신은 apparrently 중복 인덱스가 유용 할 상황을 설명하는 것이 가치 this post를 읽고 찾을 수 있습니다. 그러나 테이블에는 큰 열이 포함되어 있지 않으므로 적용되지 않습니다.

는 참고로, this blog는 데이터베이스에서 중복 인덱스를 제거하는 방법에 대해 설명합니다.

2

아마도 그렇지 않을 수도 있습니다. 당신은 당신이 다음 쿼리를 위해 사용하는 것이 인덱스 최적화,라면 : 해당 쿼리 응용 프로그램에 중요 종류이며, 테이블이 큰 경우

select [SomeId] 
from [dbo].[SomeTable] 

을 그 대상으로 인덱스를 가지는 것이 유용 할 수 있습니다. 그러나 i1에서 만족할 수있는 쿼리가 i2에서 만족 될 수 있습니다 (아마도 더 비싸지 만).

1

i2에서 여분의 열의 너비를 고려해야 할뿐만 아니라 인덱스의 중복성에 가중치를 부여 할 때 첫 번째 열과의 관계에서 세분화도 고려해야합니다.

SomeId col의 모든 valor에 대해 많은 값을 사용하는 경우, SomeId 만있는 쿼리는 보이는 것보다 더 많은 시간이 걸릴 것입니다.

관련 문제