Nie, SQL Server nie tworzy automatycznie indeksów nieklastrowych.
Indeks klastrowy jest tworzony automatycznie na podstawie klucza podstawowego, chyba że Twój CREATE TABLE
oświadczenie mówi inaczej.
Tak, zalecam indeksowanie kolumn kluczy obcych, ponieważ jest to najbardziej prawdopodobne, że zostaną one połączone/przeszukane przy użyciu IN
, EXISTS
, itp. Należy jednak pamiętać, że wskaźnik zestawu wartości o niskiej kardynalności (na przykład płeć) będzie stosunkowo bezużyteczny, ponieważ nie ma wystarczającej różnicy w wartościach.
Kompromis ze wszystkimi indeksami polega na tym, że mogą przyspieszyć pobieranie danych, ale spowalniają wstawianie/aktualizowanie/usuwanie danych. Należy również przeprowadzić konserwację, ponieważ mogą one ulec fragmentacji (takie jak dyski twarde), ale z czasem mogą też nie zostać wykorzystane. Indeksy również zajmują miejsce na dysku.