En SQL, eliminar datos no siempre significa lo mismo. Existen varias formas de hacerlo, y elegir la opción incorrecta puede tener consecuencias importantes en rendimiento, recuperación y gobernanza.
En Snowflake, los comandos DELETE, TRUNCATE y DROP tienen comportamientos distintos y están pensados para situaciones diferentes.
En este artículo analizamos sus diferencias y cuándo conviene usar cada uno.
1️⃣ DELETE: eliminar filas específicas
El comando DELETE elimina filas de una tabla según una condición.
Ejemplo
DELETE FROM orders
WHERE order_date < ‘2023-01-01’;
Este comando:
- Elimina solo las filas que cumplen la condición
- Mantiene la estructura de la tabla
- Puede afectar grandes volúmenes de datos
- Es una operación DML (Data Manipulation Language)
Características
- Permite filtros con WHERE
- Puede ser costoso en tablas grandes
- Respeta transacciones
- Los datos eliminados pueden recuperarse con Time Travel (según configuración)
Cuándo usar DELETE
- Cuando necesitas eliminar registros específicos
- Cuando la eliminación es parcial
- Cuando la lógica depende de condiciones de negocio
2️⃣ TRUNCATE: eliminar todos los datos rápidamente
El comando TRUNCATE elimina todas las filas de una tabla, pero mantiene su estructura.
Ejemplo
TRUNCATE TABLE staging_orders;
Este comando:
- Borra todos los datos
- Mantiene columnas, estructura y permisos
- Es más rápido que DELETE sin condición
- Es una operación DDL
Características
- No permite WHERE
- Es más eficiente que DELETE masivo
- Mantiene la tabla lista para reutilización
- Puede recuperarse vía Time Travel
Cuándo usar TRUNCATE
- Cuando necesitas vaciar una tabla completamente
- En entornos de staging
- En procesos batch recurrentes
- Cuando quieres reiniciar datos sin eliminar la tabla
3️⃣ DROP: eliminar el objeto completo
El comando DROP elimina completamente el objeto, incluyendo su estructura.
Ejemplo
DROP TABLE old_orders;
Este comando:
- Elimina la tabla y su definición
- Elimina metadatos asociados
- Requiere recreación si se necesita nuevamente
- Es una operación DDL
Características
- El objeto deja de existir
- Puede recuperarse con Time Travel dentro del periodo permitido
- Afecta dependencias (vistas, modelos, etc.)
Cuándo usar DROP
- Cuando la tabla ya no es necesaria
- En limpieza de entornos
- En procesos de despliegue
- Cuando se reemplaza completamente una estructura
Comparación clara
|
Comando |
Elimina datos |
Elimina estructura |
Permite WHERE |
Uso típico |
|
DELETE |
Parcial |
No |
Sí |
Eliminación selectiva |
|
TRUNCATE |
Total |
No |
No |
Vaciar tabla |
|
DROP |
Total |
Sí |
No |
Eliminar objeto |
Impacto en rendimiento
- DELETE puede ser costoso en tablas grandes.
- TRUNCATE es más eficiente cuando se elimina todo el contenido.
- DROP es inmediato porque elimina metadatos.
En Snowflake, gracias a la arquitectura basada en micro-partitions, estas operaciones son más eficientes que en sistemas tradicionales, pero siguen teniendo diferencias importantes.
Recuperación con Time Travel
Una ventaja importante en Snowflake es que tanto DELETE, TRUNCATE como DROP pueden recuperarse dentro del periodo de Time Travel configurado.
Ejemplo de recuperación:
UNDROP TABLE old_orders;
Esto permite mitigar errores accidentales.
Errores comunes
Algunos errores habituales incluyen:
- Usar DELETE sin WHERE accidentalmente
- Usar TRUNCATE pensando que elimina estructura
- Hacer DROP sin revisar dependencias
- No considerar impacto en pipelines
- No verificar periodo de retención antes de eliminar
Estas decisiones pueden afectar tanto rendimiento como gobernanza.
Buenas prácticas
- Usar DELETE solo cuando sea necesario filtrar
- Usar TRUNCATE para reinicios completos
- Revisar dependencias antes de DROP
- Confirmar en entornos productivos
- Documentar operaciones destructivas
- Aprovechar Time Travel como red de seguridad
DELETE vs TRUNCATE en entornos de datos modernos
En arquitecturas ELT modernas:
- TRUNCATE es común en tablas de staging
- DELETE se usa en reglas de negocio específicas
- DROP es habitual en despliegues controlados
Entender estas diferencias ayuda a diseñar pipelines más eficientes y seguros.
Conclusión
Aunque DELETE, TRUNCATE y DROP parecen similares, cumplen funciones distintas y tienen impactos diferentes. Elegir correctamente depende del contexto, el volumen de datos y los requisitos del sistema.
En Snowflake, estas operaciones están optimizadas gracias a su arquitectura interna, pero siguen siendo decisiones que deben tomarse con criterio técnico.




