2011-02-11 4 views
1

2 개의 테이블, Items 및 ItemDetails가 있습니다. 일반적으로이 데이터에 대한 쿼리는 Items_join_ItemDetails 뷰를 통해 수행됩니다.이 뷰는 공통 ItemID 필드에서 두 테이블을 조인합니다.조인에 대한 SQL Server 인덱스 성능

현재 ItemDetails에는 (Date, ItemID)의 클러스터 된 인덱스와 ItemID의 클러스터되지 않은 인덱스가 있습니다. Item에는 ItemID에 대한 클러스터 된 인덱스가 있습니다.

뷰를 쿼리 할 때 거의 항상 날짜 범위에 해당하므로 클러스터 된 인덱스는 DateDetails에 있습니다. 그러나 이는 ItemDetails에 대해 클러스터되지 않은 ItemID 인덱스를 사용하여 뷰를 조인해야 함을 의미합니다.

클러스터 된 인덱스와 클러스터되지 않은 인덱스를 ItemDetails로 전환하면 성능이 향상됩니까? 이것이 조인 연산에 어떻게 도움이되는지를 알 수 있지만, 쿼리로 필터링하는 날짜가 어떻게 손상되는지를 알 수 있습니다.

+0

테이블을 + 뷰에 추가 할 수 있습니까? – gbn

+0

이것은 내 인덱스가 조인 또는 쿼리를 선호해야한다는 일반적인 질문 이었지만 조만간 내 테이블/뷰 정의와 비슷한 것을 게시하려고합니다. – Colin

+0

이것들은 우리가 당신이 인덱스를 바꿀 필요가 있는지에 대해 덧붙여서 – gbn

답변

3

클러스터 된 인덱스가 2 열 이상이므로 ItemID의 조인은이 인덱스에서 이루어져야합니다. 적어도이 쿼리에서는 ItemID에 대한 NC 인덱스 만 사용되지 않을 수 있습니다.

더 중요한 것은 indexes are covering : 필요한 모든 열이 색인에 있는지 확인하는 것입니다.

성능 문제가 있습니까?

추가 제안을하려면 표 및보기 정의가 필요합니다.