mysql/sqlserver中截断与删除的比较 [英] comparison of truncate vs delete in mysql/sqlserver
本文介绍了mysql/sqlserver中截断与删除的比较的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
关于mysql/sqlserver的一件事引起了我的注意,即删除/截断
One thing struck in my head about mysql/sqlserver i.e delete/ truncate
哪个更好,更快?
在哪里使用删除?
在哪里使用截断?
推荐答案
删除
- DELETE是DML命令.
- DELETE语句使用行锁执行,表中的每一行都被锁定以删除.
- 我们可以在where子句中指定过滤器
- 如果存在条件,它将删除指定的数据.
- 删除激活触发器,因为该操作是单独记录的.
- 比截断慢,因为它保留日志.
- 可以回滚.
截断
- TRUNCATE是DDL命令.
- TRUNCATE TABLE始终锁定表和页面,但不锁定每一行.
- 不能使用Where条件.
- 它将删除所有数据.
- TRUNCATE TABLE无法激活触发器,因为该操作不会记录单个行的删除.
- 从性能角度考虑要快一些,因为它不会保留任何日志.
- 可以回滚.
-
与
- 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屋!
查看全文