2012-09-04 6 views
6

나는 모든 인덱스 유형없이 SQL Server의 테이블에 기본 키를 생성 할 수 있습니까?테이블에 인덱스가없는 기본 키?

+6

기본 키는 색인입니다. 당신은 의문의 여지가 없다 ... – sp00m

+1

나는 abt that을 안다. 내 질문은 Pk를 만들려고했지만 아무런 인덱스도 만들지 않았다. – AnandPhadke

+2

PK를 보자면, 고유 인덱스에 의해 항상 구현되는 논리적 인 제약이있다. 현재 버전의 SQL Server. –

답변

10

아니요 구현 세부 사항으로 SQL Server는 인덱스를 사용하여 기본 키를 유지 관리합니다. 그렇게하는 것을 막을 수는 없습니다. 기본 키 :

  • 은/중복 키 값이
  • 개별 행을 식별 할 수 있습니다 존재하지 않음을 보장

SQL 서버가 이미 이러한 기능을 제공하는 메커니즘을 가지고 접근 - 고유 인덱스를 - 그래서 사용 제약을 집행하는 사람들.

+0

나는 기본적으로 SQL Server가 클러스터 된 인덱스를 생성하도록 추가하려고한다. 이 동작을 재정 의하여 서버가 비 클러스터형 인덱스를 만들 수 있습니다. – gstackoverflow

0

실제로 색인 기능은 책을 가로 지르는 것과 같은 방식으로 작동합니다. 페이지 번호와 주제와의 관계가 없으면 특정 페이지 나 주제로 갈 수 없습니다. 행의 "페이징"(순서)은 SQL Server의 클러스터 된 인덱스에 의해 물리적으로 수행됩니다. 테이블에 PK가 없으면 모든 고유 키 규정 컬럼에 클러스터 된 인덱스를 추가 할 수 있습니다. 테이블에 둘 이상의 클러스터 된 인덱스를 사용할 수 없으며 다른 모든 클러스터되지 않은 인덱스는 검색/순회를 위해 클러스터 된 인덱스에 따라 달라 지므로 클러스터 된 인덱스 없이는 열 PK를 만들 수 없습니다.

+2

PK! = 클러스터 된 인덱스. 클러스터되지 않은 인덱스가 여러 개 있고 클러스터 된 인덱스 (힙이라고도 함)가없는 테이블을 가질 수 있습니다. 실제 순서는 실제로는 관련이 없으며 클러스터 된 인덱스에 의해 완전히 결정되지 않습니다. –

-1

단어 다음에 키워드 NONCLUSTERED을 추가하여 클러스터 된 인덱스가 아닌 기본 키가있는 테이블을 만들 수 있습니다.

+0

다음과 같은 질문에 대한 답을 게시하는 대신. 이해하기 쉽도록 예제를 제공하십시오. – tarzanbappa

관련 문제