Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Per impostazione predefinita, SQL Server crea un indice non cluster su tutte le colonne di una tabella

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.