Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

205
Visualizações
¿TRUNCATE y DELETE producen los mismos resultados?

Sé que puede parecer que esta pregunta ha sido respondida, pero no, he leído todas las demás preguntas y sus respuestas y lo que estoy preguntando es diferente. Sé que TRUNCATE es DDL y DELETE es DML, sé que DELETE se puede usar con WHERE para eliminar solo una fila y TRUNCATE elimina la columna completa, etc.

He leído todas estas respuestas: ¿Cuál es la diferencia entre eliminar de table_a y truncar table table_a en MySQL? ¿Diferencia entre TRUNCATE y DELETE?

¿Cuál es la diferencia entre el comando truncar y eliminar en la consulta sql?

¿Cuál es la diferencia entre truncar y eliminar en el servidor sql?

Lo que estoy preguntando es si estas dos afirmaciones producen los mismos resultados.

 DELETE FROM my_table;

Y

 TRUNCATE TABLE my_table;

Cuanto más leo sobre esto, más me confunde, así que solo diga VERDADERO o FALSO y luego explique, por favor.

Sé que puede sonar tonto, pero ayuda .

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Usted preguntó acerca de Oracle y MySQL. Esta respuesta es para Oracle.

No.

TRUNCATE elimina todas las filas de una tabla y restablece la "marca de límite superior" del montón a "cero", liberando efectivamente la asignación de disco del tablespace.

DELETE simplemente elimine las filas, por lo que el espacio en disco aún se asignará a la tabla, incluso si ya no tiene filas.

over 4 years ago · Santiago Trujillo Relatório

0

FALSO : lo explicaré en el contexto del motor InnoDB de MySQL. Etiquetó la pregunta tanto mysql como oracle11g .

ELIMINAR

  • DELETE puede ser parte de una transacción. La acción se puede revertir. Copia registros antiguos en el segmento de reversión y, si confirma, esas versiones de registro se recolectan como elementos no utilizados. Si revierte, las versiones de registro se restauran en la tabla.

  • DELETE no restablece el contador AUTO_INCREMENT de la tabla.

  • DELETE no crea un nuevo tablespace. El tamaño del tablespace no se reduce. Por lo tanto, no reducirá la huella de la tabla en el disco, solo marcará la mayoría de las páginas en el tablspace como "libres", es decir, pueden sobrescribirse con datos posteriores.

  • DELETE ejecuta activadores de eliminación para cada fila afectada.

  • DELETE requiere el privilegio DELETE.

  • Puede hacer una ELIMINACIÓN con una cláusula JOIN, por lo que opcionalmente puede eliminar de varias tablas en una declaración.

  • Si usa registros binarios para registrar los cambios y usa binlog_format=ROW , el registro binario se llenará con tantas imágenes de fila como el número de filas eliminadas. Esto podría ocupar mucho espacio.

TABLA TRUNCADA

  • TRUNCATE TABLE es una declaración DDL, como dijiste, por lo que realiza una confirmación implícita .

  • TRUNCATE TABLE crea un nuevo tablespace con un tamaño mínimo y elimina el tablespace original.

  • TRUNCATE TABLE restablece AUTO_INCREMENT para la tabla respectiva.

  • TRUNCATE TABLE no copia ningún registro en el segmento de reversión.

  • TRUNCATE TABLE no ejecuta ningún disparador.

  • TRUNCATE TABLE requiere el privilegio DROP.

  • Solo puede truncar una tabla por instrucción.

  • TRUNCATE TABLE no ocupará más espacio en el registro para una tabla grande. Las declaraciones DDL siempre se escriben en formato de declaración de registro binario, incluso si establece binlog_format=ROW .

  • TRUNCATE TABLE es básicamente equivalente a esta secuencia:

     CREATE TABLE new_table LIKE original_table; -- ie with zero rows RENAME TABLE original_table TO table_to_drop, new_table TO original_table; DROP TABLE table_to_drop;
over 4 years ago · Santiago Trujillo Relatório

0

Respuesta simple, sí, en gran medida producen los mismos resultados: una tabla sin registros. Si bien existen otras diferencias (p. ej., cómo se tratan los desencadenantes), para mí, las mayores diferencias son:

  1. Truncar no actualiza los registros, por lo que no puede revertirlos .
  2. Debido a que no actualiza los registros, se ejecuta mucho más rápido.

Por lo tanto, recomendaría usar TRUNCATE con precaución pero, si está completamente seguro de que quiere una tabla vacía, la usaría.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda