Mysql
 sql >> Database >  >> RDS >> Mysql

Ottimizzazione dell'istruzione di eliminazione MySQL

Se il tuo DELETE ha lo scopo di eliminare la maggior parte delle righe in quella tabella, una cosa che le persone spesso fanno è copiare solo le righe che vuoi conservare su una tabella duplicata, quindi utilizzare DROP TABLE o TRUNCATE per cancellare la tabella originale molto più rapidamente.

Un indice può aiutare a trovare le righe che devi eliminare, ma l'eliminazione richiede l'aggiornamento dell'indice. Dopo aver eliminato molte righe, l'indice potrebbe essere sbilanciato e richiedere un po' di manutenzione con OPTIMIZE TABLE .

Il DATE_SUB() function è un'espressione costante (non varia riga per riga), quindi Query Optimizer dovrebbe essere abbastanza intelligente da estrarlo in fattori ed eseguire il calcolo una volta.

Non è necessario creare un indice aggiuntivo per una chiave primaria. Il vincolo di chiave primaria crea implicitamente un indice che offre lo stesso vantaggio di un indice di chiave non primaria.

Un indice composto è probabilmente utile quanto un indice a colonna singola, a condizione che i criteri di ricerca facciano riferimento alle colonne più a sinistra dell'indice. L'avvertenza "probabilmente" è dovuta al fatto che i singoli nodi dell'indice sono più grandi e quindi ci vuole più memoria per memorizzare nella cache l'indice, ma questo è un fattore abbastanza piccolo da non creare un intero altro indice a colonna singola.