2012-09-04 12 views
6

Zastanawiam się, czy możemy utworzyć klucz podstawowy na stole w serwerze sql bez jakiegokolwiek indeksu na nim?Klucz podstawowy bez indeksu w tabeli?

+6

Klucz główny to indeks. Twoje pytanie nie ma sensu ... – sp00m

+1

Wiem, że to było. Moje pytanie brzmiało, że chcę utworzyć Pk, ale nie ma na nim żadnego indeksu. – AnandPhadke

+2

Albo być pedantycznym PK jest logicznym ograniczeniem, które zawsze jest implementowane przez unikalny indeks w aktualne wersje SQL Server. –

Odpowiedz

10

Nie. Jako szczegółową implementację , SQL Server zachowuje klucz podstawowy za pomocą indeksu. Nie możesz temu zapobiec. Klucz podstawowy:

  • Zapewnia, że ​​nie występują zduplikowane wartości kluczy
  • Pozwala poszczególne rzędy być identyfikowane/obejrzano

SQL Server ma już mechanizmy, które oferują te funkcje - unikatowe indeksy - więc używa te, które wymuszają przymus.

+0

Chcę dodać, że domyślnie serwer sql tworzy indeks klastrowy. Możesz zmienić to zachowanie, a serwer utworzy indeks nieklastrowy. – gstackoverflow

0

Właściwie indeksuje funkcje w taki sam sposób, w jaki przechodzi się po książce. Nie można przejść do określonej strony lub tematu, chyba że istnieje numer strony i jej związek z tematami. To "Paging" (porządkowanie) wierszy odbywa się fizycznie przez Clustered Index w SQL Server. Jeśli w tabeli nie ma PK, można dodać indeks klastrowany do kolumny (kolumn) kwalifikowania unikalnego klucza. Ponieważ nie może być więcej niż jeden indeks klastrowany w tabeli, a wszystkie inne indeksy nieklastrowane zależą od indeksu klastrowanego dla wyszukiwania/przejścia, nie można utworzyć kolumny PK bez indeksu klastrowanego.

+2

PK! = Indeks klastrowany. Można mieć tabele z wieloma indeksami nieklastrowymi i bez indeksu klastrowanego (inaczej kupa). Klasyfikacja fizyczna jest praktycznie nieistotna i nie jest w pełni określona przez indeks klastrowy. –

-1

Możesz utworzyć tabelę z kluczem podstawowym, który nie jest indeksem klastrowym, dodając słowo kluczowe NONCLUSTERED po słowie primary key.

+0

Zamiast zamieszczać odpowiedź na takie pytanie. Wystarczy podać przykład, aby dobrze zrozumieć. – tarzanbappa

Powiązane problemy