2010-06-08 29 views
34

¿qué es más rápido?borrar todo de la tabla

DELETE * FROM table_name; 

o

DELETE * FROM table_name where 1=1; 

por qué?

¿truncate table trabajo en el acceso?

+3

¿Para qué base de datos? ¿Para qué mesa? ¿Para qué tamaño de datos? –

+2

¿Qué descubrió cuando midió el tiempo empleado por ambos? –

+0

mysql y acceso –

Respuesta

94

TRUNCATE TABLE nombre_tabla

+12

Bingo. La respuesta fue C) ninguna de las anteriores. – ceejayoz

+1

Sonó como una pregunta de tarea, así que pensé que iría en otra dirección ... :) – Jaymz

+0

¿Truncar la tabla funciona en el acceso? –

14

Esto debería ser más rápido:

DELETE * FROM table_name; 

porque RDBMS no tienen que mirar es lo where.

que debe estar bien con truncate sin embargo:

truncate table table_name 
+0

trunca el trabajo de tabla en el acceso? –

+1

No, no es compatible con Access. – Jaymz

+0

Jet trata DELETE * FROM Table como un truncado, en lugar de eliminar los registros uno por uno. Sin embargo, no creo que restablezca el valor de la semilla Autonumber. Eso tiene que hacerse en código o con un compacto (ni siquiera seguro de que se restablecerá con un compacto en las iteraciones recientes de Jet/ACE). –

8

Hay una mySQL bug report de 2004 que todavía parece tener cierta validez. Parece que en 4.x, este fue el más rápido:

DROP table_name 
CREATE TABLE table_name 

TRUNCATE table_nameDELETE FROM era internamente en ese entonces, proporcionar ninguna mejora del rendimiento.

Esto parece haber cambiado, pero solo en 5.0.3 y menos. Desde el informe de error:

[11 Ene de 2005 16:10] Marko Mäkelä

ahora he implementado TRUNCATE TABLE rápido, lo cual se espera que sea incluido en MySQL 5.0.3.

+1

¡Este es un buen descubrimiento! – Shyam

7

Esto borra la tabla table_name.

Reemplácelo con el nombre de la tabla, que se eliminará.

DELETE FROM table_name; 
0

También puede utilizar truncado.

truncate table table_name; 
Cuestiones relacionadas