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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top