问题描述
这些命令在性能上有何不同
ALTER TABLE t1 DROP PARTITION p1;
和
ALTER TABLE t1 TruncATE PARTITION p1;
我有一个同一个问题的link,但是它只处理命令的输出,而不是效率,就像是删除一行还是一次删除所有行一样。 注意:考虑到大量数据,请说分区中有数百万行。
解决方法
我不知道这是否回答了您的问题:
TRUNCATE 和 DROP 的工作原理完全相同,执行速度也一样快,但是它们的作用却不同。
截断:从表中删除所有行,而不记录单个行的删除。
DROP :删除一个或多个表定义以及这些表的所有数据,索引,触发器,约束和权限规范。
TRUNCATE , DROP 都是最少的日志记录操作。这意味着它们的工作方式完全相同。它没有删除单独的行,而是将相关的数据页标记为未分配,并另外将表的元数据标记为已删除。
TRUNCATE 和 DROP 在行为和速度方面几乎相同。而且无论如何,如果您根本不需要表结构,请使用 DROP 。
,删除分区应该稍微快一点,尽管您很难测量它。如果我没记错的话,TRUNCATE是作为DROP + CREATE实现的。