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

Indici raggruppati su colonne non di identità per velocizzare gli inserimenti in blocco?

Bene, l'ho messo alla prova e l'inserimento di un indice cluster sulle due colonne "che definiscono i blocchi" aumenta le prestazioni della mia tabella.

L'inserimento di un blocco è ora relativamente veloce rispetto alla situazione in cui avevo una chiave IDENTITY in cluster e all'incirca quanto quando non avevo alcun indice cluster. L'eliminazione di un blocco è più veloce che con o senza indice cluster.

Penso che il fatto che tutti i record che voglio eliminare o inserire siano garantiti per essere tutti insieme su una certa parte del disco rigido renda le tabelle più veloci - mi sembrerebbe logico.

Aggiorna :Dopo un anno di esperienza con questo progetto posso dire che per questo approccio al lavoro, è necessario programmare la ricostruzione regolare di tutti gli indici (lo facciamo una volta alla settimana). In caso contrario, gli indici si frammentano molto presto e le prestazioni vengono perse. Tuttavia, siamo in un processo di migrazione a un nuovo design del database con tabelle partizionate, che è sostanzialmente migliore in ogni modo, ad eccezione del costo della licenza di Enterprise Server, ma ormai ce ne siamo già dimenticati. Almeno io.