TRUNCATE 和 DELETE 的区别

前言

工作中有这么一个业务场景,数据库里的数据需要定时全量删除。
全量删除数据有两个选择,
1:DELETE FROM table_name
2:TRUNCATE TABLE table_name
由于 TRUNCATE TABLE 相当于不带 WHERE 条件的 DELETE 语句,那么不论是选择 DELETE 还是选择 TRUNCATE TABLE 好像都能达到我删除全量数据的目的。

DELETE 语法

DELETE 语句大家都熟悉,语法如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<!-- 单表操作 -->
DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name
[PARTITION (partition_name,...)]
[WHERE where_condition]
[ORDER BY ...]
[LIMIT row_count]

<!-- 多表操作1 -->
DELETE [LOW_PRIORITY] [QUICK] [IGNORE]
tbl_name[.*] [, tbl_name[.*]] ...
FROM table_references
[WHERE where_condition]

<!-- 多表操作2 -->
DELETE [LOW_PRIORITY] [QUICK] [IGNORE]
FROM tbl_name[.*] [, tbl_name[.*]] ...
USING table_references
[WHERE where_condition]

TRUNCATE TABLE 语法

1
TRUNCATE [TABLE] tbl_name

DELETETRUNCATE TABLE 的区别

现在我们了解了 DELETETRUNCATE TABLE 的共同点和语法后,现在我们来了解一下它们的区别。
DELETETRUNCATE TABLE 的最大区别在于执行速度和是否可以条件删除。
DELETE 可以通过 WHERE 条件来筛选需要删除的记录,且可以返回删除的记录数。
TRUNCATE TABLE 不能条件筛选需要删除的记录,且不返回删除的记录数。
TRUNCATE TABLE 的执行速度非常快,DELETE 的执行速度不是很快。

文章目录
  1. 1. 前言
  2. 2. DELETE 语法
  3. 3. TRUNCATE TABLE 语法
  4. 4. DELETE 和 TRUNCATE TABLE 的区别
,