Pregunta

Tengo algunas tablas que compilo como parte de mi resumen de informes. No los necesito en absoluto. Alguien mencionado para truncarlos ya que sería más rápido.

¿Fue útil?

Solución

Eliminar registros de una tabla registra cada eliminación y ejecuta los activadores de eliminación para los registros eliminados. Truncate es un comando más poderoso que vacía una tabla sin registrar cada fila. SQL Server le impide truncar una tabla con claves externas que hacen referencia a ella, debido a la necesidad de verificar las claves externas en cada fila.

Normalmente, Truncate es ultra rápido, ideal para eliminar datos de una tabla temporal. Conserva la estructura de la tabla para uso futuro.

Si realmente desea eliminar la tabla definiciones así como los datos, simplemente elimine las tablas.

Consulte este artículo de MSDN para obtener más información

Otros consejos

DROP TABLE borra la tabla.

TRUNCATE TABLE lo vacía, pero deja su estructura para datos futuros.

DROP y TRUNC hacen cosas diferentes:

TABLA DE TRUNCAS

  

Elimina todas las filas de una tabla sin   el registro de las eliminaciones de fila individuales.   TRUNCATE TABLE es similar a la   DELETE la declaración sin la cláusula WHERE;   Sin embargo, TRUNCATE TABLE es más rápido y   usa menos sistema y registro de transacciones   recursos.

TABLA DE GOTA

  

Elimina una o más definiciones de tabla   y todos los datos, índices, disparadores,   restricciones y permiso   Especificaciones para esas tablas.

En cuanto a la velocidad, la diferencia debe ser pequeña. Y de todos modos, si no necesita la estructura de la tabla, utilice DROP.

Creo que te refieres a la diferencia entre DELETE TABLE y TRUNCATE TABLE.

TABLA DE GOTA

  

eliminar la tabla de la base de datos.

BORRAR TABLA

  

sin una condición eliminar todas las filas. Si hay disparador y referencias, esto se procesará para cada fila. También se modificará un índice si existe.

TABLA DE TRUNCAS

  

establece el número de filas cero y sin registrar cada fila. Que es mucho más rápido que el otro tanto.

Ninguna de estas respuestas señala una diferencia importante acerca de estas dos operaciones. Drop table es una operación que se puede deshacer. Sin embargo, Truncate no se puede revertir ['TRUNCATE TABLE' también se puede revertir]. De esta manera, dejar caer una tabla muy grande puede ser muy costoso si hay muchas filas, ya que todas tienen que registrarse en un espacio temporal en caso de que decida retroceder.

Por lo general, si deseo deshacerme de una mesa grande, la truncaré y luego la dejaré. De esta manera, los datos se eliminarán sin registro, y la tabla se puede eliminar, y esa reducción será muy económica porque no es necesario registrar datos.

Es importante señalar, sin embargo, que truncar simplemente elimina los datos, dejando la tabla, mientras que dropear, de hecho, eliminará los datos y la tabla en sí. (suponiendo que las claves externas no impidan tal acción)

TRUNCATE TABLE conserva todos tus índices antiguos y otras cosas. DROP TABLE, obviamente, se desharía de la tabla y requerirá que la vuelvas a crear más tarde.

Tabla DROP

DROP TABLE [table_name];
  

El comando DROP se usa para eliminar una tabla de la base de datos. Es un comando DDL. También se eliminarán todas las filas, índices y privilegios de la tabla. La operación DROP no se puede revertir.

BORRAR tabla

DELETE FROM [table_name]
WHERE [condition];

DELETE FROM [table_name];
  

El comando DELETE es un comando DML. Se puede usar para eliminar todas las filas o algunas filas de la tabla según la condición especificada en la cláusula WHERE. Se ejecuta utilizando un bloqueo de fila, cada fila de la tabla se bloquea para su eliminación. Mantiene el registro de transacciones, por lo que es más lento que TRUNCATE.   Las operaciones DELETE se pueden revertir.

Tabla TRUNCATE

TRUNCATE TABLE [table_name];
  

El comando TRUNCATE elimina todas las filas de una tabla. No registrará la eliminación de cada fila, sino que registrará la desasignación de las páginas de datos de la tabla, lo que lo hace más rápido que ELIMINAR. Se ejecuta utilizando un bloqueo de tabla y toda la tabla está bloqueada para eliminar todos los registros. Es un comando DDL. Las operaciones de TRUNCATE no se pueden revertir.

Drop se deshace de la tabla completamente, eliminando la definición también. Truncate vacía la tabla pero no elimina la definición.

Al truncar la tabla se vacía la tabla. Bajando la tabla se borra por completo. Cualquiera de los dos será rápido, pero es probable que soltarlo sea más rápido (dependiendo de su motor de base de datos).

Si ya no lo necesita, suéltelo para que no esté saturando su esquema.

¿ELIMINAR TableA en lugar de TRUNCATE TableA? Un error común es que hacen lo mismo. No asi que. De hecho, hay muchas diferencias entre los dos.

ELIMINAR es una operación registrada por fila. Esto significa que la eliminación de cada fila se registra y se elimina físicamente.

Puedes BORRAR cualquier fila que no viole una restricción, mientras dejas la clave foránea o cualquier otra contraposición en su lugar.

TRUNCATE también es una operación registrada, pero de una manera diferente. TRUNCATE registra la desasignación de las páginas de datos en las que los datos existe La desasignación de páginas de datos significa que sus datos Todavía existen filas en las páginas de datos, pero la Las extensiones se han marcado como vacías para su reutilización. Esto es lo que hace que TRUNCATE sea una operación más rápida de realizar sobre DELETE.

No puede TRUNCAR una tabla que tenga una clave externa restricciones Tendrás que quitar las contraíntas, TRUNCAR las Tabla, y volver a aplicar los contraints.

TRUNCATE restablecerá cualquier columna de identidad a la semilla predeterminada valor.

truncate elimina todas las filas, pero no la tabla en sí, es esencialmente equivalente a eliminar sin una cláusula where, pero generalmente más rápido.

Tengo una corrección para una de las declaraciones anteriores ... " truncate no se puede revertir "

Truncar se puede deshacer. Hay algunos casos en los que no se puede hacer una tabla truncada o caer, como cuando se tiene una referencia de clave externa. Para una tarea como informes mensuales, probablemente solo deje la mesa una vez que ya no la necesite. Si estuviera haciendo este informe acumulativo con más frecuencia, probablemente mantendría la tabla en su lugar y utilizaría Truncate.

Espero que esto te ayude, aquí hay más información que deberías encontrar útil ...

Consulte el siguiente artículo para obtener más detalles: http://sqlblog.com/blogs/denis_gobo/archive/ 2007/06/13 / 1458.aspx

Además, para obtener más detalles sobre la eliminación frente a truncar, consulte este artículo: http://www.sql-server-performance.com/faq/delete_truncate_difference_p1. aspx

Gracias! Jeff

  

TRUNCATE TABLE es funcionalmente   idéntica a la instrucción DELETE sin   Cláusula WHERE: ambos eliminan todas las filas en   la mesa. Pero TRUNCATE TABLE es   Más rápido y utiliza menos sistema y   recursos de registro de transacciones que BORRAR.

     

La sentencia DELETE elimina las filas uno   a la vez y registra una entrada en el   Registro de transacciones para cada fila eliminada.   TRUNCATE TABLE elimina los datos por   desasignar las páginas de datos utilizadas para   almacenar los datos de la tabla, y sólo el   Las desasignaciones de página se registran en el   registro de transacciones.

     

TRUNCATE TABLE elimina todas las filas de un   mesa, pero la estructura de la mesa y su   columnas, restricciones, índices y asi   en permanecer El contador utilizado por un   la identidad de las nuevas filas se restablece a la   Semilla para la columna. Si quieres   retener el contador de identidad, usar   BORRAR en su lugar. Si quieres eliminar   definición de la tabla y sus datos, use la   Declaración DROP TABLE.

     

No puedes usar TRUNCATE TABLE en un   Tabla referenciada por una LLAVE EXTERNA   restricción; en su lugar, utilice BORRAR   declaración sin una cláusula WHERE.   Debido a que TRUNCATE TABLE no está registrado,   no puede activar un disparador.

     

TRUNCATE TABLE no se puede utilizar en   mesas participando en un indexado   vista.

De http://msdn.microsoft.com /en-us/library/aa260621(SQL.80).aspx

En el estándar SQL, la tabla DROP elimina la tabla y el esquema de la tabla - TRUNCATE elimina todas las filas.

Las respuestas aquí coinciden con la pregunta, pero voy a responder la pregunta que no hiciste. " ¿Debo usar Truncate o Delete? " Si está eliminando todas las filas de una tabla, normalmente querrá truncar, ya que es mucho más rápido. ¿Por qué es mucho más rápido? Al menos en el caso de Oracle, restablece la marca de agua alta . Esto es básicamente una eliminación de referencia de los datos y permite a la db reutilizarla para otra cosa.

DELETE VS TRUNCATE

  1. La declaración DELETE elimina las filas una a la vez y registra una entrada en la transacción registro para cada fila eliminada. TRUNCATE TABLE elimina los datos al desasignarlos páginas utilizadas para almacenar los datos de la tabla y solo registra las desasignaciones de página en el registro de transacciones
  2. Podemos usar la cláusula WHERE en DELETE pero en TRUNCATE no puede usarla
  3. Cuando la instrucción DELETE se ejecuta utilizando un bloqueo de fila, cada fila de la tabla se bloquea para su eliminación. TRUNCATE TABLE siempre bloquea la tabla y la página, pero no cada fila
  4. Después de ejecutar una instrucción DELETE , la tabla aún puede contener páginas vacías. La operación de eliminación no utiliza un bloqueo de tabla, la tabla (montón) contendrá muchos vacíos páginas Para los índices, la operación de eliminación puede dejar páginas vacías, aunque estas
    las páginas serán desasignadas rápidamente por un proceso de limpieza en segundo plano
  5. TRUNCATE TABLE elimina todas las filas de una tabla, pero la estructura de la tabla y sus columnas, las restricciones, los índices, etc., se mantienen
  6. La declaración de
  7. DELETE no hace referencia a la columna de identidad RESEED , sino la declaración de TRUNCATE RESEEDS the IDENTIDAD columna
  8. No puede usar TRUNCATE TABLE en tablas que:
    1. Son referenciados por una restricción FOREIGN KEY . (Puede truncar una tabla que tiene una clave externa que se hace referencia a sí misma.)
    2. Participa en una vista indexada.
    3. Se publican mediante la replicación transaccional o la replicación de mezcla
  9. TRUNCATE TABLE no puede activar un desencadenador porque la operación no se registra individualmente eliminaciones de filas
  

Eliminar declaración

Eliminar instrucción eliminar filas de la tabla y devolver el número de filas que se eliminan de la tabla. en esta declaración, usamos la cláusula where para eliminar los datos de la tabla

  • Eliminar declaración es más lento que Truncar porque eliminó los registros uno por uno
  

Declaración de truncamiento

Truncar declaración Se eliminó o se eliminaron todas las filas de la tabla.

  • Es más rápido que la Declaración de eliminación porque eliminó todos los registros de la tabla
  • La declaración de truncamiento no devuelve el número de filas se eliminan de la tabla
  

Declaración de caída

La declaración de eliminación eliminó todos los registros, así como la estructura de la tabla

  

BORRAR

     

El comando DELETE se usa para eliminar filas de una tabla. Una cláusula WHERE se puede usar para eliminar solo algunas filas. Si no se especifica la condición WHERE, se eliminarán todas las filas. Después de realizar una operación de BORRAR necesitas   COMPRUEBE o ROLLBACK la transacción para hacer que el cambio sea permanente o para deshacerlo.

     

TRUNCATE

     

TRUNCATE elimina todas las filas de una tabla. La operación no se puede revertir ... Como tal, TRUCATE es más rápido y no usa tanto espacio de deshacer como BORRAR.

De: http://www.orafaq.com/faq/difference_between_truncate_delete_and_drop_commands p>

Drop soltar toda la tabla y toda su estructura

truncar borrar todas las filas de la tabla es diferente de eliminar que también elimina índices de filas

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top