Non, SQL Server ne crée pas automatiquement des index non clusterisés.
Un index clusterisé est créé automatiquement sur la base de la clé primaire, sauf si votre CREATE TABLE
la déclaration dit le contraire.
Oui, je recommanderais d'indexer les colonnes de clé étrangère car elles sont les plus susceptibles d'être jointes/recherchées en utilisant IN
, EXISTS
, etc. Cependant, sachez qu'un index sur un ensemble de valeurs à faible cardinalité (sexe par exemple) sera relativement inutile car il n'y a pas assez de différence dans les valeurs.
Le compromis avec tous les index est qu'ils peuvent accélérer la récupération des données, mais ralentir l'insertion/la mise à jour/la suppression des données. Il y a aussi une maintenance qui doit être effectuée car ils peuvent être fragmentés (comme les disques durs) mais peuvent également ne pas être utilisés avec le temps. Les index occupent également de l'espace disque.