una tablas tabla registros registro fila eliminar ejemplo delete datos contenido como borrar mysql

tablas - MySQL Borra todas las filas de la tabla y restablece la ID a cero



eliminar una fila en mysql (4)

No eliminar, use truncar:

Truncate table XXX

El controlador de tabla no recuerda el último valor de AUTO_INCREMENT usado, pero comienza a contar desde el principio. Esto es cierto incluso para MyISAM e InnoDB, que normalmente no reutilizan valores de secuencia.

Source

Necesito eliminar todas las filas de una tabla, pero cuando agregue una nueva, quiero que la identificación de la clave principal, que tiene un incremento automático, comience nuevamente desde 0, respectivamente, desde 1.


Si la tabla tiene claves foráneas, siempre uso el siguiente código:

SET FOREIGN_KEY_CHECKS = 0; -- disable a foreign keys check SET AUTOCOMMIT = 0; -- disable autocommit START TRANSACTION; -- begin transaction /* DELETE FROM table_name; ALTER TABLE table_name AUTO_INCREMENT = 1; -- or TRUNCATE table_name; -- or DROP TABLE table_name; CREATE TABLE table_name ( ... ); */ SET FOREIGN_KEY_CHECKS = 1; -- enable a foreign keys check COMMIT; -- make a commit SET AUTOCOMMIT = 1 ;

Pero la diferencia estará en el tiempo de ejecución. Mire por encima de la respuesta de Sorin.


Si no puede usar TRUNCATE (por ejemplo, debido a restricciones de clave externa) puede usar una tabla alter después de eliminar todas las filas para reiniciar el auto_increment:

ALTER TABLE mytable AUTO_INCREMENT = 1


Un hecho interesante

Estaba seguro de que TRUNCATE siempre funcionaría mejor, pero en mi caso, para una base de datos con aproximadamente 30 tablas con claves externas, con solo unas pocas filas, se tardó aproximadamente 12 segundos en TRUNCATE todas las tablas, en lugar de solo unos pocos cientos de milisegundos para DELETE las filas. Configurar el incremento automático agrega aproximadamente un segundo en total, pero aún es mucho mejor.

Así que sugeriría probar ambos, ver cuál funciona más rápido para su caso.