truncate、drop、delete清空同一张表哪个更快?

0.结论

清空表,速度:
同样的数据量的一张表,清空表的速度:truncate>drop>delete

1. 验证:

1.1 数据库版本:

(root@localhost) [(none)]> select version();
+------------+
| version()  |
+------------+
| 5.7.19-log |
+------------+
1 row in set (0.00 sec)

(root@localhost) [(none)]> 

1.2 数据行数

(root@localhost) [sbtestdb]> select count(*) from sbtest1;
+-----------+
| count(*)  |
+-----------+
| 100000000 |
+-----------+
1 row in set (15.83 sec)

1.3 drop耗时

(root@localhost) [sbtestdb]> drop table sbtest1;
Query OK, 0 rows affected (6.85 sec)

1.4 truncate耗时

(root@localhost) [sbtestdb]> truncate table sbtest1;
Query OK, 0 rows affected (3.60 sec)
1.5 小结

drop
1.drop删除表的时候,会将磁盘上的文件进行删除。
2.drop操作也会在数据库中将元数据也要删除。
3.表的统计信息等也需要清空。

truncate
0.不涉及元数据的修改。
1.只需要清空表空间中的数据页进行物理清除。

delete就不验证了,肯定是最慢的。

posted @ 2022-01-17 10:43  红桃Z  阅读(746)  评论(0编辑  收藏  举报