2014-02-27 3 views
3

먼저 SQL의 테이블 또는 해당 데이터베이스에 대한 기본 키의 역할을 이해합니다.사용자 정의 테이블 유형에 기본 키가 있어야합니까?

그러나 사용자 정의 테이블 형식에 대해서는 기본 키를 만들어야하는 이유를 알 수 없습니다. 내 경험으로는 나는 그 (것)들에게서 성과 이득을 찾아 내지 않았다, 그러나 나는 나의 발견이 어쩌면 경험있는 관점보다는 오히려 그 (것)들 및 한정된 경험의 나의 일반적인 사용에서 온 ㄴ다는 것을 의심한다.

예를 들어 일반적으로 삽입/업데이트 프로 시저에 테이블 값 매개 변수를 사용하거나 선택 쿼리를 만드는 데 사용되는 값 배열을 전달합니다. 성능에 별다른 이점이 없다는 사실을 발견했습니다. 성능 저하를 경험 한 적이 있다면 (10 초 밀리 초를 말합니다.)

나는 그 안에 전달 된 모든 데이터가 이미 조심스럽게 청소/주문되었음을 공개해야합니다. 따라서이 문제로 인해 혜택을 볼 수는 없지만 쉽게 알 수있는 방법이 없습니다.

따라서 사용자 정의 테이블 유형에 기본 키가 있어야합니까? 아니면 중요하지 않습니까?

사과하는 경우 사과합니다. 나는 상당한 양의 검색을했지만 그때 나는 잘못된 키워드 조합을 사용할 수있었습니다.

귀하의 통찰력은 언제나 대단히 감사하겠습니다.

+1

클러스터 된 인덱스를 구성해야하므로 성능이 약간 저하됩니다. 데이터가 사전 주문되어 있고 데이터에 대한 선택적인 쿼리를 수행하지 않을 경우 인덱스는 단지 리소스 낭비 일뿐입니다. 집합에 새로운 순서를 지정하거나 반복 집합이 집합에 대한 선택적인 쿼리를 호출하지 않을 경우 인덱스에서 이점을 얻을 수 있습니다. 집합이 충분히 큰 경우 클러스터 된 인덱스와 잠재적으로 다른 비표준을 만들 가치가 있습니다. 군집 한 indecies. – Jodrell

+0

@ Jodrell, 고마워. 어떤 미친 이유 때문에 클러스터 된 인덱스를 구성하는 오버 헤드를 고려하지 않았습니다 !!! 또한 선주문되는 데이터에 대한 내 가정이 정확하다는 사실을 아는 것도 좋습니다. –

답변

-1

당신은 당신의 내용은 사용자 정의 테이블 형식에 비 클러스터형 인덱스를 만들 수 없습니다 index.But .. 클러스터

의 형성을 결과 사용자 정의 테이블 형식에 대한 기본 키를 만들 수 있습니다 당신이 전달하는 배열에 직접 그것은 클러스터 된 기본 키를 가진 모든 의미가 다른 테이블과 조인 일치하는 ID의 배열 인 경우 아래의 페이지를

http://technet.microsoft.com/en-us/library/bb522526(v=sql.105).aspx

+0

감사합니다. 나는 그 특정 페이지를 미리 보면서 많은 시간을 보냈다. 내가이 모든 것을 이해하는 동안,이 경우 그것은 내가 실제로 경험하고있는 내가 수수께끼의 /해야하지 말아야하는 것에 대답하지 않는다. –

-1

를 참조하십시오.

삽입하기 전에 데이터를 주문하는 데 시간을 소비하지 않으려면 응용 프로그램에서 이미 주문해야합니다.

이런 경우 나는 약 400ms의 이득을 경험했습니다.

케이스별로 평가해야합니다.

관련 문제