2013-07-20 18 views
7

Sto usando la tabella troncata nome_tabella; su un tavolo con circa 1 milione di righe, ma ha impiegato troppo tempo, a partire dalle ultime 3 ore.la tabella troncata impiega molto tempo, è normale?

è normale? Puoi suggerire un altro modo per eliminare tutte le righe da una tabella, che potrebbe essere più veloce?

+2

Quale motore? MYISAM o InnoDB – hjpotter92

+0

Inoltre, controllare: http://bugs.mysql.com/bug.php?id=68184 – hjpotter92

+0

C'è qualche altro processo che sta attualmente utilizzando la tabella? – Ben

risposta

30

Tronca non funzionerà in alcuni casi come,

quando si dispone di indice tipo di cose e di alcuni vincoli di chiave

Facile modo che suggerisco è

RENAME TABLE table_name TO t1; 

CREATE TABLE table_name LIKE t1; 

DROP TABLE t1; 

o si può anche utilizzare DELETE FROM table_name;

+2

brutale ... lo adoro :) Se davvero non hai bisogno dei dati; questo è probabilmente il modo migliore per farlo. – Trent

+0

concordato, è un modo migliore –

+1

@smratikatiyar: accettare la risposta se questo funziona per voi. –

1

Credo che il deadlock si verifichi durante l'esecuzione della query, quindi è meglio ucciderlo.

Ho usato per cancellare molti dati, eliminando piccoli blocchi in una singola query (10k funziona bene).

così si potrebbe proprio alcuni script che farà questo per voi

+1

se il troncato è lento sto pensando di creare un nuovo tavolo con la stessa struttura e poi di eliminare quello vecchio, penso che sarà abbastanza veloce. pls condividi le tue opinioni su questo. –

0

Ho appena avuto un troncamento durato per sempre (oltre 6 minuti) e poi l'ho annullato. O così ho pensato. In effetti, quel passo aveva impiegato molto meno di un secondo e io avevo cancellato le azioni del secondo passaggio LATER - la finestra Output azione non era stata aggiornata.

0

Si consiglia inoltre di provare a riavviare il servizio MySQL o un intero sistema una sola volta, se nessuna delle soluzioni di cui sopra funziona.

Problemi correlati