visual varios una tablas tabla relacionadas registros registro modificar eliminar elementos datos con como boton borrar sql-server tsql

sql server - varios - Eliminar todas las filas en la tabla



eliminar varios registros sql (5)

Como otros han dicho, TRUNCATE TABLE es mucho más rápido, pero tiene algunas restricciones (tomadas de here ):

No puede usar TRUNCATE TABLE en tablas que:

- Están referenciados por una restricción FOREIGN KEY. (Puede truncar una tabla que tiene una clave externa que hace referencia a sí misma).
- Participa en una vista indexada.
- Se publican mediante la replicación transaccional o la duplicación de mezcla.

Para tablas con una o más de estas características, use la instrucción DELETE en su lugar.

El mayor inconveniente es que si la tabla que está intentando vaciar tiene claves externas apuntando hacia ella, la llamada truncada fallará.

Normalmente haría un delete * from XXX pero en esta tabla es muy lento, normalmente tiene alrededor de 500k a 1m de filas (una es varbinary (MAX) si eso es importante).

Básicamente me pregunto si hay una manera rápida de emty la tabla de todo el contenido, es realmente más rápido de soltar y recrear, luego eliminar el contenido a través de la declaración delete sql

La razón por la que no quiero volver a crear la tabla es porque es muy utilizada y eliminar / recrear, supongo que destruirá los índices y las estadísticas recopilados por el servidor sql

También espero que haya una manera de hacerlo porque hay una manera "inteligente" de obtener el recuento de filas a través de sys.sysindexes, así que espero que haya una manera igual de inteligente de eliminar contenido


Puede cambiar el nombre de la tabla en cuestión, crear una tabla con un esquema idéntico y, a su gusto, soltar la tabla original.

Consulte el Manual de referencia de MySQL 5.1 para los comandos [ RENAME TABLE ] [1] y [ CREATE TABLE ] [2].

RENAME TABLE tbl TO tbl_old; CREATE TABLE tbl LIKE tbl_old; DROP TABLE tbl_old; -- at your leisure

Este enfoque puede ayudar a minimizar el tiempo de inactividad de la aplicación.


Sugeriría usar TRUNCATE TABLE, es más rápido y usa menos recursos que ELIMINAR DE xxx

Aquí está el MSDN relacionado de MSDN



Truncate table es más rápido que delete * from XXX . Delete es lento porque funciona una fila a la vez. Hay algunas situaciones en las que truncar no funciona, sobre las que puede leer en MSDN .