español entre ejemplo drop diferencia delete sql sql-server sybase

sql - ejemplo - Diferencia entre drop table y truncate table?



truncate table sql español (16)

Tengo algunas tablas que construyo como parte de mi paquete de informes. No los necesito después en absoluto. Alguien mencionó truncarlos porque sería más rápido.


ELIMINAR VS TRONCATE

  1. La instrucción DELETE 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 desasignando las páginas de datos utilizadas para almacenar los datos de la tabla y registra solo las desasignaciones de página en el registro de transacciones
  2. Podemos usar la cláusula WHERE en DELETE pero en TRUNCATE no puedes usarlo
  3. Cuando la sentencia DELETE se ejecuta con 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 que se ejecuta una instrucción DELETE , la tabla puede contener páginas vacías. Si la operación de eliminación no utiliza 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, aunque estas
    las páginas serán desasignadas rápidamente por un proceso de limpieza de fondo
  5. TRUNCATE TABLE elimina todas las filas de una tabla, pero la estructura de la tabla y sus columnas, restricciones, índices, etc.
  6. DELETE instrucción DELETE no RESEED column column pero TRUNCATE statement RESEEDS la columna IDENTITY
  7. No puede usar TRUNCATE TABLE en tablas que:
    1. Están referenciados por una restricción FOREIGN KEY . (Puede truncar una tabla que tiene una clave externa que hace referencia a sí misma).
    2. Participa en una vista indexada
    3. Se publican mediante la replicación transaccional o la duplicación de mezcla
  8. TRUNCATE TABLE no puede activar un disparador porque la operación no registra las eliminaciones de fila individuales

Creo que significa la diferencia entre DELETE TABLE y TRUNCATE TABLE.

MESA PLEGABLE

eliminar la tabla de la base de datos.

BORRAR TABLA

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

TABLA TRUNCATE

establecer el recuento de filas cero y sin registrar cada fila. Que es mucho más rápido que los otros ambos.


DROP TABLE borra la tabla.

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


DROP y TRUNC hacen cosas diferentes:

TABLA TRUNCATE

Quita todas las filas de una tabla sin registrar las eliminaciones de fila individuales. TRUNCATE TABLE es similar a la sentencia DELETE sin cláusula WHERE; sin embargo, TRUNCATE TABLE es más rápido y utiliza menos recursos de registro de sistema y de transacción.

MESA PLEGABLE

Elimina una o más definiciones de tablas y todos los datos, índices, desencadenantes, restricciones y especificaciones de permisos para esas tablas.

En lo que respecta a la velocidad, la diferencia debería ser pequeña. Y de todas formas, si no necesita la estructura de la tabla, sin duda use DROP.


Drop se deshace de la mesa por completo, eliminando la definición también. Truncar vacía la tabla pero no elimina la definición.


La eliminación de registros de una tabla registra cada eliminación y ejecuta los desencadenantes 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 evita que trunque 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 ultrarápido, ideal para limpiar datos de una tabla temporal. Mantiene la estructura de la tabla para uso futuro.

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

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


Las respuestas aquí coinciden con la pregunta, pero voy a responder la pregunta que no hizo. "¿Debo usar 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 eliminación de referencias de los datos y permite que el DB lo reutilice para otra cosa.


Tengo una corrección para una de las afirmaciones anteriores ... "truncar no puede revertirse"

Truncar puede revertirse. Hay algunos casos en los que no puede hacer una tabla truncar o soltar, como cuando tiene una referencia de clave externa. Para una tarea como los informes mensuales, probablemente dejaría caer la mesa una vez que ya no la necesite. Si estuviera haciendo este rollup informando con mayor frecuencia, probablemente mantendría la tabla en su lugar y usaría truncado.

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

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

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

¡Gracias! Jeff


Truncar la tabla vacía la tabla. Dejar caer la mesa lo elimina por completo. Cualquiera de los dos será rápido, pero perderlo probablemente sea más rápido (según el motor de su base de datos).

Si ya no lo necesita, bótelo para no saturar su esquema.


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


TRUNCATE TABLE es funcionalmente idéntico a la declaración DELETE sin cláusula WHERE: ambos eliminan todas las filas de la tabla. Pero TRUNCATE TABLE es más rápido y utiliza menos recursos de sistema y registro de transacciones que DELETE.

La instrucción DELETE 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 desasignando las páginas de datos utilizadas para almacenar los datos de la tabla, y solo las desasignaciones de página se registran en el registro de transacciones.

TRUNCATE TABLE elimina todas las filas de una tabla, pero la estructura de la tabla y sus columnas, restricciones, índices, etc. permanecen. El contador utilizado por una identidad para filas nuevas se restablece a la semilla para la columna. Si desea conservar el contador de identidad, use DELETE en su lugar. Si desea eliminar la definición de tabla y sus datos, use la instrucción DROP TABLE.

No puede usar TRUNCATE TABLE en una tabla a la que hace referencia una restricción FOREIGN KEY; en su lugar, use la declaración DELETE sin una cláusula WHERE. Debido a que TRUNCATE TABLE no está registrado, no puede activar un disparador.

TRUNCATE TABLE no se puede usar en tablas que participan en una vista indexada.

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


TRUNCATE TABLE mantiene toda su indexación anterior y otras cosas. DROP TABLE, obviamente, eliminaría la tabla y le exigiría que la vuelva a crear más adelante.


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 deshacer [''TRUNCATE TABLE'' también se puede retrotraer]. De esta manera, colocar una tabla muy grande puede ser muy costoso si hay muchas filas, ya que todas deben registrarse en un espacio temporal en caso de que decida deshacerlo.

Por lo general, si quiero deshacerme de una mesa grande, la truncaré y luego la soltaré. De esta forma, los datos se rechazarán sin registro, y la tabla se puede descartar, y esa caída será muy económica porque no es necesario registrar datos.

Sin embargo, es importante señalar que truncar simplemente borra datos, dejando la tabla, mientras que, de hecho, eliminar eliminará los datos y la tabla en sí misma. (suponiendo que las claves externas no impiden tal acción)


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

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

Puede ELIMINAR cualquier fila que no viole una restricción, mientras deja la llave foránea o cualquier otro contraint 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 las páginas de datos significa que sus filas de datos todavía existen realmente 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 para realizar sobre DELETE.

No puede TRONCATE una tabla que tenga restricciones de clave externa. Tendrás que eliminar las contracciones, TRONCATE la tabla y vuelves a aplicar las contraints.

TRUNCATE restablecerá las columnas de identidad al valor inicial predeterminado.


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


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 ninguna condición WHERE, se eliminarán todas las filas. Después de realizar una operación DELETE, usted debe COMPROMETER o ROLLBACK la transacción para que el cambio sea permanente o para deshacerlo.

TRUNCAR

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

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