2013-10-17 2 views
3

나는 프로파일 러 및 데이터베이스 어드바이저를 실행하여 데이터베이스의 성능을 향상시키는 데이터베이스를 보유하고 있습니다. 나는 지금까지 그렇게 잘했다. 고문은 더 나은 성과를 내기 위해 많은 인덱스와 통계를 제시했다. 하지만 이것으로 실행 된 문장 읽기 :MS SQL 색인 열 정렬 순서가 중요합니까?

CREATE NONCLUSTERED INDEX [_dta_index_xinfobaseacl_11_397426127__K3_K7_K1_K5] ON [dbo].[xinfobaseacl] 
(
    [lviewid] ASC, 
    [lparentid] ASC, 
    [lid] ASC, 
    [xlactor] ASC 
)WITH (SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF) ON [PRIMARY] 
go 

CREATE NONCLUSTERED INDEX [_dta_index_xinfobaseacl_11_397426127__K7_K5_K1_K3] ON [dbo].[xinfobaseacl] 
(
    [lparentid] ASC, 
    [xlactor] ASC, 
    [lid] ASC, 
    [lviewid] ASC 
)WITH (SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF) ON [PRIMARY] 
go 

같은 테이블, 같은 열, 동일한 매개 변수, 열의 단지 다른 정렬 순서 ... 그래서 혼란 스러워요

,하지 정렬 순서를 색인 생성에 정말로 중요합니까 ???

답변

2

예 복합 색인의 열 순서가 중요합니다.

두 개 모두 4 개 열 모두에 대해 동등한 조건부에 대해 똑같이 잘 작동합니다.

그러나 첫 번째는 추가로

WHERE lviewid = 1 AND lparentid 1 AND lid = 1 
ORDER BY xlactor 

같은 쿼리를 지원합니다 그리고 두 번째는 작업 부하에 따라 둘 다 인덱스를 생성해야하는지 여부 등

WHERE parentid = 1 AND xlactor = 1 
ORDER BY lid, xlactor 

같은 쿼리를 지원합니다. DTA에 데이터 수정 진술을 포함한 대표적인 워크로드를 공급 했습니까?

+0

사실 WHERE 문에서 사용법이 올바른지 확인하려면 모든 소스 코드를 찾아야한다는 것을 의미합니다 동일한 내용의 많은 색인을 방지하기 위해 색인의 정렬 순서, 맞습니까? 이것은 고문에 의해 작성되었으므로 WHERE 문에서 다른 정렬 순서로 동일한 컨텐츠에 대한 조회를 가질 수 있습니다. – YvesR

+0

그리고 : 잘못된 정렬 순서 사용법에 대한 색인이 없으면 다른 기존 색인을 사용하지 않을 것입니다. 맞습니까? – YvesR

+0

@ YvesR - 첫 번째 주석이'WHERE'에있는 술어의 순서가 색인 정의에서와 동일해야하는지 여부를 묻는 경우 대답은 "아니오"입니다. 'lviewid'는 첫 번째 인덱스의 첫 번째 컬럼이고 두 번째 인덱스의 마지막 컬럼이기 때문에 두 인덱스가 찾을 수있는 세 개의 컬럼의 서브 세트가 존재하지 않습니다. 따라서 4 개 열 모두에 대한 동등 조건부의 경우를 제외하고는 일반적으로 서로 다른 쿼리를 지원하는 데 도움이됩니다. –

1

혼란스러운 용어입니다. 정렬 순서에 큰 영향은 없지만 인덱스의 열 순서가 중요 할 수 있습니다.

복합 인덱스의 올바른 열 순서는 쿼리에 따라 다르지만 일반적으로 다른 값이 가장 작은 열이 가장 먼저 나와야합니다.

+0

복합 인덱스의 열 순서는 인덱스의 전체 정렬 순서에 영향을 미치지 만, 어쩌면 이것이 그 의미 일 수 있습니다. –

+0

@MartinSmith 아마도. 주어진 예에서 정렬 순서는 모든 열에 대해 동일합니다. – podiluska

+0

첫 번째 글자는 [lviewid] ASC, [lparentid] ASC, [lid] ASC, [xlactor] ASC '로 정렬되고 두 번째 글자는 [lparentid] ASC, [xlactor] ASC, [lid] ASC, [lviewid] ASC' –

관련 문제