Załóżmy Mam SQL Server 2005 tabeli, Tablex, z 2 indeksów na nim:
Zmień klucz podstawowy z nieklastrowany do Klastra
PK_TableX = PRIMARY KEY nieklastrowany na FieldA
IX_TableX_FieldB = klastrowych na FieldB
Chcę, aby PK był KLASTRY, a drugi indeks nie był KORZYSTANY.
Muszę założyć, że baza danych będzie w użyciu w momencie, gdy próbuję zmienić indeksy - więc moim głównym problemem, którego chcę uniknąć, jest to, że w pewnym momencie procesu nie będzie istniało ograniczenie PK na stole. Chcę być chroniony przed ryzykiem włożenia duplikatów kluczy.
Oznacza to, że nie mogę po prostu upuścić klucza głównego i odtworzyć go.
Proces ten należy wykonać za pomocą skryptu SQL, a nie SSMS.
Mam podejście, które moim zdaniem zadziała (opiszę to jako potencjalną odpowiedź), ale chciałbym je otworzyć, na wypadek, gdyby czegoś mi brakowało lub jest inny/lepszy sposób. Plus, może okazać się użyteczne dla innych w przyszłości
Dlaczego chcesz grupować na klucz podstawowy? Czy to GUID czy INT? Czy większość twoich zapytań obejmuje dopasowanie PK? – awright18
@ awright18 - klaster PK daje lepszą wydajność, w rzeczywistości jest złożonym kluczem podstawowym na 2 polach int, które najczęściej pytano na – AdaTheDev