2017-04-04 6 views
0

예제에서는 첫 번째 (마스터) 테이블의 기본 키로 서로 관련이있는 두 개의 테이블이 있습니다. 두 번째 테이블은 첫 번째 (마스터) 테이블과 관련된 여러 행을 가질 수 있습니다. 내 실제 예에서 수천 개의 클라이언트가 동시에 선택, 업데이트, 삽입 및 삭제되는 수만 개의 행이 있습니다. 내가 겪고있는 문제는 동시 업데이트 및 선택 때문에 잠겨 있습니다.고유하지 않은 열의 SQL Server 클러스터 된 인덱스

클러스터 된 인덱스를 사용하면 기본 테이블과 관련된 고유하지 않은 ID 열이 내 상황에 전혀 도움이됩니까?

테이블 구조는 :

select * 
from wks_std_apps 
where wks_master_id = @wks_master_id 

update wks_std_apps 
set blah... 
where wks_master_id = @wks_master_id 
+0

컬럼이 인덱스되어 있으면 select와 updates가 주어진'wks_master_id'에 대한 행을 더 빠르게 찾을 수 있어야합니다. 그러나 클러스터 될 필요는 없습니다. – user1935361

+0

현재 클러스터 된 인덱스가 있습니까? 그렇다면 독특한 것입니까? –

답변

1

이 이상적으로 두 번째 테이블이 클러스터 된 인덱스와 같은 서버 (이의 조합이 될 수 있습니다 것입니다 고유 기본 키있을 것입니다 :

wks_master: wks_master_id [primary key], other_columns.... 
wks_std_apps: wks_std_apps_id [primary key], wks_master_id, other_columns.... 

쿼리는 일반적으로처럼 보인다 열). 값이 고유하지 않으면 비 클러스터형 인덱스를 사용하여 도움이됩니다.

+0

클러스터되지 않은 색인을 추가하면 즉시 문제가 해결되었습니다. 삽입물/업데이트/삭제는 약간 처벌되지만, 선택은이 DB에 대한 대다수의 트랜잭션입니다. –