tworzę bazę danych w serwerze SQL 2008bazy danych: klucz podstawowy, skupione lub nieklastrowany
CREATE TABLE Users
(
U_Id INT NOT NULL
FirstName VARCHAR(50) NOT NULL,
LastName VARCHAR(50) NOT NULL,
Email VARCHAR(200)
Password VARCHAR(50)
)
Chcę, aby U_Id klucz podstawowy. chciałbym zapytać, jaka jest różnica między
CONSTRAINT pk_UserID PRIMARY KEY (U_Id)
to
CONSTRAINT pk_UserID PRIMARY KEY CLUSTERED (U_Id)
i to
CONSTRAINT pk_UserID PRIMARY KEY NONCLUSTERED (U_Id)
Kiedy stosować każdy?
Przeczytałem artykuł, ale wciąż nie jest dla mnie jasne. Czy ktoś może mi dać szybkie wyjaśnienie?
Należy pamiętać, że wszystkie indeksy nieklastrowe, które utworzysz, zawsze będą zawierały dane w indeksie klastrowym (ponieważ tak jest znaleziony wiersz danych w tabeli). [Microsoft docs] (http://msdn.microsoft.com/en-us/library/ms177484.aspx) Więc nie myśl, że zaoszczędzisz miejsce, tworząc indeks o dużym/szerokim indeksie klastrowym, chyba że nie ma żadnych innych indeksów na stole. – Granger
Klucz podstawowy to identyfikator wiersza. Musi być unikalny i nie może mieć wartości NULL. Indeks klastrowy informuje SQL o przechowywaniu danych na dysku. Rzeczywiste wiersze danych są przechowywane w kolejności określonej przez ten indeks. Ponieważ zawiera również dane dotyczące miejsca przechowywania danych na dysku, klastrowany klucz indeksu jest przechowywany w każdym indeksie. W prawie wszystkich przypadkach najlepiej jest zrobić to samo. I prawie zawsze najlepiej jest, aby klucz podstawowy był identyfikatorem, aby dane były przechowywane na dysku sekwencyjnie. – brianfeucht