mysql/sqlserver中截断与删除的比较 [英] comparison of truncate vs delete in mysql/sqlserver

查看:73
本文介绍了mysql/sqlserver中截断与删除的比较的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

关于mysql/sqlserver的一件事引起了我的注意,即删除/截断

One thing struck in my head about mysql/sqlserver i.e delete/ truncate

哪个更好,更快?

在哪里使用删除?

在哪里使用截断?

推荐答案

删除

  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. 可以回滚.


  • DELETE和TRUNCATE一起使用时,都可以回滚 TRANSACTION(TRUNCATE可以在SQL Server中回滚,但不能在MySQL中回滚).
  • 如果有一个具有自动递增的PK,则截断将 重置计数器
  • DELETE and TRUNCATE both can be rolled back when used with TRANSACTION (TRUNCATE can be rolled back in SQL Server, but not in MySQL).
  • if there is a PK with auto increment, truncate will reset the counter

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

这篇关于mysql/sqlserver中截断与删除的比较的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆