Tengo algunas tablas que creo como parte de mi resumen de informes. No los necesito para nada después. Alguien mencionó truncarlos ya que sería más rápido.
sql
sql-server
sybase
Brian G
fuente
fuente
Respuestas:
La eliminación de registros de una tabla registra cada eliminación y ejecuta los activadores de eliminación para los registros eliminados. Truncar 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.
Truncar es normalmente ultrarrápido, ideal para limpiar datos de una tabla temporal. Conserva la estructura de la mesa para uso futuro.
Si realmente desea eliminar las definiciones de la tabla , así como los datos, simplemente elimine las tablas.
Consulte este artículo de MSDN para obtener más información.
fuente
DROP TABLE elimina la tabla.
TRUNCATE TABLE lo vacía, pero deja su estructura para datos futuros.
fuente
DROP y TRUNC hacen cosas diferentes:
MESA TRUNCATE
MESA PLEGABLE
En cuanto a la velocidad, la diferencia debería ser pequeña. Y de todos modos, si no necesita la estructura de la tabla, use DROP.
fuente
Creo que significa la diferencia entre DELETE TABLE y TRUNCATE TABLE.
MESA PLEGABLE
BORRAR TABLA
MESA TRUNCATE
fuente
set the row count zero
en realidad, establece el valor de identidad de nuevo en el valor de semilla de identidad inicial.Ninguna de estas respuestas señala una diferencia importante sobre estas dos operaciones. Drop table es una operación que se puede revertir.
Sin embargo, truncar no se puede revertir['TRUNCATE TABLE' también se puede revertir]. De esta forma, dejar caer una tabla muy grande puede resultar muy costoso si hay muchas filas, porque todas deben registrarse en un espacio temporal en caso de que decida revertirla.Por lo general, si quiero deshacerme de una tabla grande, la truncaré y luego la soltaré. De esta manera, los datos se eliminarán sin registro, y la tabla se puede eliminar, y esa eliminación será muy económica porque no es necesario registrar datos.
Sin embargo, es importante señalar que truncar solo elimina datos, dejando la tabla, mientras que drop eliminará, de hecho, los datos y la tabla en sí. (asumiendo que las claves externas no excluyen tal acción)
fuente
DROP
es básicamente unTRUNCATE
seguido de la eliminación de los metadatos de la tabla de las tablas del sistema. Vea esta pregunta aquíMesa plegable
DROP TABLE [table_name];
BORRAR Tabla
DELETE FROM [table_name] WHERE [condition]; DELETE FROM [table_name];
Mesa TRUNCATE
TRUNCATE TABLE [table_name];
fuente
TRUNCATE TABLE mantiene toda su indexación anterior y todo eso. DROP TABLE, obviamente, eliminaría la tabla y requeriría que la recrearas más tarde.
fuente
Drop elimina la tabla por completo, eliminando también la definición. Truncar vacía la tabla pero no elimina la definición.
fuente
Truncar la mesa vacía la mesa. Dejar caer la mesa la elimina por completo. Cualquiera de los dos será rápido, pero eliminarlo probablemente sea más rápido (dependiendo de su motor de base de datos).
Si ya no lo necesita, suéltelo para que no abarrote su esquema.
fuente
BORRAR TableA en lugar de TRUNCATE TableA? Un error común es que hacen lo mismo. No tan. De hecho, existen 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.
Puede BORRAR cualquier fila que no viole una restricción, mientras deja la clave externa o cualquier otra restricció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 existen los datos. La desasignación de páginas de datos significa que sus filas de datos todavía existen en las páginas de datos, pero 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 TRUNCATE una tabla que tiene restricciones de clave externa. Tendrá que quitar las restricciones, TRUNCAR la mesa y volver a aplicar las restricciones.
TRUNCATE restablecerá cualquier columna de identidad al valor inicial predeterminado.
fuente
truncar elimina todas las filas, pero no la tabla en sí, es esencialmente equivalente a eliminar sin cláusula where, pero generalmente más rápido.
fuente
Tengo una corrección para una de las declaraciones anteriores ... "truncar no se puede deshacer"
Truncar se puede revertir. Hay algunos casos en los que no puede truncar o eliminar la tabla, como cuando tiene una referencia de clave externa. Para una tarea como la presentación de informes mensuales, probablemente dejaría caer la mesa una vez que ya no la necesite. Si estuviera haciendo este informe acumulativo con más frecuencia, probablemente conservaría la tabla y usaría truncar.
Espero que esto ayude, aquí hay más información que debería 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 eliminar o truncar, consulte este artículo: http://www.sql-server-performance.com/faq/delete_truncate_difference_p1.aspx
¡Gracias! Jeff
fuente
De http://msdn.microsoft.com/en-us/library/aa260621(SQL.80).aspx
fuente
En el estándar SQL, la tabla DROP elimina la tabla y el esquema de la tabla; TRUNCATE elimina todas las filas.
fuente
Las respuestas aquí coinciden con la pregunta, pero voy a responder la pregunta que no hiciste. "¿Debo utilizar truncar o eliminar?" 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 desreferenciación de los datos y permite que la base de datos los reutilice para otra cosa.
fuente
BORRAR VS TRUNCATE
DELETE
declaración elimina las filas de una en una y registra una entrada en el registro de transacciones para cada fila eliminada.TRUNCATE TABLE
elimina los datos al desasignar las páginas de datos utilizadas para almacenar los datos de la tabla y registra solo las desasignaciones de páginas en el registro de transaccionesWHERE
cláusula enDELETE
peroTRUNCATE
usted no puede usarlaDELETE
instrucción se ejecuta usando 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 filaDELETE
que se ejecuta una instrucción, la tabla aún puede contener páginas vacías. Si la operación de eliminación no usa un bloqueo de tabla, la tabla (montón) contendrá muchas páginas vacías. Para los índices, la operación de eliminación puede dejar páginas vacías atrás, aunque estaspáginas se desasignarán rápidamente mediante un proceso de limpieza en segundo plano.
TRUNCATE TABLE
elimina todas las filas de una tabla, pero la estructura de la tabla y sus columnas, restricciones, índices, etc. permanecenDELETE
la declaración no es laRESEED
columna de identidad sino laTRUNCATE
declaración deRESEEDS
laIDENTITY
columnaTRUNCATE TABLE
en tablas que:FOREIGN KEY
restricción. (Puede truncar una tabla que tiene una clave externa que hace referencia a sí misma).TRUNCATE TABLE
no se puede activar un disparador porque la operación no registra eliminaciones de filas individualesfuente
Drop drop tabla completa y toda su estructura
truncar eliminar todas las filas de la tabla es diferente de eliminar que también elimina índices de filas
fuente
Eliminar declaración
Declaración de eliminación eliminar filas de la tabla y devolver el número de filas se elimina de la tabla. En esta declaración, usamos la cláusula where para eliminar datos de la tabla
Declaración truncada
Truncar sentencia Elimina o elimina todas las filas de la tabla.
Declaración de caída
La declaración de caída eliminó todos los registros, así como la estructura de la tabla
fuente
De: http://www.orafaq.com/faq/difference_between_truncate_delete_and_drop_commands
fuente