Dimensioni tabella dove mettere un indice comincia ad avere senso
-
25-09-2019 - |
Domanda
Ho una tabella del calendario con circa 2K righe. Si tratta di una tabella di ricerca, e verrà utilizzato in molti join.
Le colonne sono
CalendarId (PK, Clustered)
DateTimeValue
IsWeekDay
IsWeekend
IsHoliday
La mia domanda è questa:. Voglio avere un indice su DateTimeValue
Quando dovrei creare questo indice?
In altre parole, quanto grande fa una tabella deve essere prima di mettere un indice su di esso?
Soluzione
È aggiungere l'indice come si crea la tabella, prima di inserire la prima fila. L'indicizzazione è parte del disegno modello di dati, non un ripensamento quando i dati iniziano a mostrare problemi.
Un indice mancante su un tavolo vuoto è comunque un indice mancante.
Altri suggerimenti
Si vuole fare in modo di avere un indice su cose come c'è bisogno di te, non si vuole "wait" fino a quando non diventa un problema .... a quel punto si è perso tempo.
Ma, allo stesso tempo, non creare un indice solo per il gusto di creare uno, in modo che abbia senso per l'applicazione.
Per esempio, a seconda del funzionamento, sto pensando che potrebbe essere "più efficiente" a raggrupparsi sul DateTimeValue, come sto cercando di indovinare si dispone di 1 ingresso al giorno.
Sempre aggiungere l'indice per iniziare. Una tabella è mai troppo piccolo per avere un indice. Un indice diventa un problema solo quando si dispone di un grande tavolo, come inserti / aggiornamenti / eliminazioni può rallentare.
Credo che "DateTimeValue" sarebbe la chiave naturale in questa tabella? Esso dovrebbe avere un indice univoco dall'inizio.
Per quanto riguarda gli altri campi, è improbabile che indici su IsWeekDay o IsWeekend verrà utilizzato dal ottimizzatore poiché essi hanno una bassa selettività (IsWeekDay restituisce 71% delle righe).
Modifica Si noti inoltre che questo è fondamentalmente una tabella di sola lettura. È possibile aggiungere qualsiasi indici che ti piace come sarà sempre e solo influenzerà write-prestazioni una volta ogni pochi anni, quando si aggiunge un altro anni di dati ad esso.