No, SQL Server non crea automaticamente indici non in cluster.
Un indice in cluster viene creato automaticamente in base alla chiave primaria, a meno che il tuo CREATE TABLE
la dichiarazione dice il contrario.
Sì, consiglierei di indicizzare le colonne della chiave esterna perché è più probabile che vengano JOIN'd/cercate utilizzando IN
, EXISTS
, ecc. Tuttavia, tieni presente che un indice su un insieme di valori a cardinalità bassa (ad esempio il sesso) sarà relativamente inutile perché non c'è abbastanza differenza nei valori.
Il compromesso con tutti gli indici è che possono accelerare il recupero dei dati, ma rallentare l'inserimento/l'aggiornamento/l'eliminazione dei dati. C'è anche la manutenzione che deve essere eseguita perché possono essere frammentati (come i dischi rigidi) ma potrebbero anche non essere utilizzati nel tempo. Anche gli indici occupano spazio su disco.