当前位置: 首页 > 面试题库 >

mysql / sqlserver中截断与删除的比较[重复]

钱欣悦
2023-03-14
问题内容

这个问题已经在这里有了答案

SQL中的TRUNCATE和DELETE有什么区别 (32个答案)

TRUNCATE vs DELETE FROM的利弊 (11个答案)

6年前关闭。

关于mysql / sqlserver,我的脑海里发生了一件事,即 删除/截断

哪个更好更快?

在哪里使用删除?

在哪里使用截断?


问题答案:

删除

  1. DELETE是DML命令。
  2. 使用行锁执行DELETE语句,表中的每一行都被锁定以进行删除。
  3. 我们可以在where子句中指定过滤器
  4. 如果存在条件,它将删除指定的数据。
  5. 删除激活触发器,因为该操作是单独记录的。
  6. 比截断慢,因为它保留日志。
  7. 可以回滚。

截短

  1. TRUNCATE是DDL命令。
  2. TRUNCATE TABLE始终锁定表和页面,但不锁定每一行。
  3. 无法使用Where条件。
  4. 它删除所有数据。
  5. TRUNCATE TABLE无法激活触发器,因为该操作不会记录单个行的删除。
  6. 在性能上更快,因为它不保留任何日志。
  7. 可以回滚。

  8. 与TRANSACTION一起使用时,DELETE和TRUNCATE都可以回滚(TRUNCATE可以在SQL Server中回滚,但不能在MySQL中回滚)。

  9. 如果存在具有自动递增的PK,则truncate将重置计数器

http://beginner-sql-tutorial.com/sql-delete-statement.htm



 类似资料:
  • 问题内容: 我想从中删除数据的SQL数据库中有一个表?我想保留列。 例如,我的表有3列,即名称,年龄,日期。我不想删除这些,我只想删除数据。 我应该截断,删除还是删除? 问题答案: 不要删除-它将删除数据和定义。 如果删除-数据不见了,并且自动增量值从上一个值开始继续。 如果您截断-则就像您刚刚创建了表一样。无数据且所有计数器均已重置

  • 问题内容: 列出以下MySql命令之间的区别。 删除表 tablename ; 截断表 tablename ; 从 表名 中删除1; 另外,请根据您的经验告诉我每种产品的典型使用场景。 问题答案: 在此之后,它 消失了 。没有桌子了。没有更多数据。 当您不再需要该表时,请使用它。 此后,该表为空,并且(重要地)自动递增键被重置为1。从字面上看,这就像拥有一个全新的表。 当您只需要一个空表时,请使用

  • 问题内容: 我有两个表,并且如果第二个表中存在行的确切副本,则需要从第一个表中删除行。 有没有人举过我如何在MSSQL Server中执行此操作的示例? 问题答案: 好吧,在某个时候,您将必须检查所有列-可能还需要加入… 应该可以做到……还有,但是这只会有所 帮助 -您仍然需要检查实际值以防止哈希冲突。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

  • 问题内容: 我有通过方法提供的实体类。我试图弄清楚如何通过JPA JPQL或Criteria API发出截断或从中删除。我认为条件api对于使用类更自然,而truncate是一种更快的操作,因此首选。到目前为止,这是我整理的内容,但不确定如何添加/更改。 注意:return ,我没有其他参考,这是一个更通用的实现。 问题答案: 假设引用了要删除的表,则可以按照以下步骤操作: 或采用通用方法: 对于

  • 如前所述,我正在MySQL中进行并练习一个分区数据。由于我想清除所有的数据,数据仍然在那里,不能删除一次。 这是我创建的分区表。 我很好奇我的MySQL软件有问题吗?还是分区表导致了这种情况?因为我有一个没有分区的备份表,所以可以很好地使用Truncate,Delete和Select脚本。

  • 问题内容: 如果它具有另一个数组的元素,是否还有其他更好的方法可以从一个数组中删除重复项呢,它工作得很好。 问题答案: 或者,随着ES6的推出: