Skip to main content

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

Eliminación selectiva

TRUNCATE

Total

No

No

Vaciar tabla

DROP

Total

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.