2010-10-15 9 views
5

Sto eseguendo alcune grandi query di eliminazione basate su date su tabelle con indici su campi diversi dalla data. Mi è stato detto che il rilascio di tali indici, l'esecuzione dell'eliminazione e quindi la ricostruzione dell'indice potrebbero essere più rapidi rispetto all'esecuzione dell'eliminazione rispetto alla tabella indicizzata. È questo il caso?È possibile rilasciare e ricreare un indice per velocizzare l'eliminazione di SQL?

Posso capire perché la rimozione effettiva dei record sarebbe più veloce senza un indice, ma sento che l'atto di doverlo ricostruire in un secondo momento negherebbe qualsiasi vantaggio di velocità guadagnato.

risposta

1

Quando si decide di rimuovere prima gli indici, è necessario confrontare il costo (o il tempo) per mantenere l'indice durante un'eliminazione con il costo per ricreare l'indice dopo l'eliminazione. Due dei fattori più influenti sono il numero di righe nella tabella e il numero o le righe eliminate.

Quando il conteggio delle righe è piccolo o il conteggio delle righe da eliminare è piccolo, non sarà vantaggioso rimuovendo prima gli indici. Tuttavia, se si dispone di una tabella di grandi dimensioni e di molte righe da eliminare, il costo dell'aggiornamento dell'indice aumenta fino a raggiungere un punto in cui è più costoso mantenere l'indice che eliminare e ricreare l'indice.

Poiché si indica che si stanno eseguendo più eliminazioni di grandi dimensioni, la mia impressione è che si presenti una situazione in cui la rimozione e la ricreazione degli indici possono essere d'aiuto.

0

Se gli indici hanno uno scarso fattore di riempimento, sono sicuro che lo farebbero.

Problemi correlati