在 alter table drop column 之后优化表是不是有意义?

Posted

技术标签:

【中文标题】在 alter table drop column 之后优化表是不是有意义?【英文标题】:Does it make sense to optimize the table after alter table drop column?在 alter table drop column 之后优化表是否有意义? 【发布时间】:2020-03-20 06:33:04 【问题描述】:

我在表employees 中删除了列name。 如果我运行OPTIMIZE TABLE employees,它会减少空间使用吗?

我的想法:

文档说 optimize table 等于 InnoDB 的 alter table(如果我正确阅读了这个 https://dev.mysql.com/doc/refman/8.0/en/optimize-table.html#optimize-table-innodb-details)。

另外,alter table drop column 更改了表中的行结构,因此它应该重写所有行。我认为这就是优化发生的地方。

【问题讨论】:

【参考方案1】:

在运行任何更改行大小的 ALTER TABLE 后,无需在 InnoDB 表上 OPTIMIZE TABLE。

ALTER TABLE 将行复制到新的表空间中,并重建索引。这将完成您希望使用 OPTIMIZE TABLE 进行的相同碎片整理。

【讨论】:

以上是关于在 alter table drop column 之后优化表是不是有意义?的主要内容,如果未能解决你的问题,请参考以下文章

MVC - ALTER TABLE DROP COLUMN 失败,因为一个或多个对象访问此列

Oracle 11g XE "alter table drop column" 导致 ORA-00600

在 Hive CLI 上执行“alter table table_name drop partition(part_column < value)”时出现空指针错误

ALTER TABLE - 修改表的定义

我如何知道数据库触发器是 DROP_TABLE 还是 ALTER_TABLE?

数据库CRUD操作