我有一个 MySQL 表:
CREATE TABLE responses (
id INT NOT NULL AUTO_INCREMENT,
other_id INT NOT NULL,
details TEXT,
deleted BOOLEAN,
PRIMARY KEY (id)
);
用户可以删除响应
中的记录。
我的计划是使用字段deleted
来实现删除。每当用户删除记录时,我都会将 deleted
设置为 1
。
时不时地,我可能想要删除所有已删除的记录或将它们存档。我正在考虑使用分区来加快速度:
PARTITION BY LIST(deleted) (
PARTITION pActive VALUES IN (0),
PARTITION pDeleted VALUES IN (1)
);
我的问题是这会使删除操作变慢吗?现在,当我更改记录的“已删除”字段时,MySQL 需要将记录移动到一个完全不同的分区。这看起来可能很慢。
如有任何建议,我们将不胜感激。
最佳答案
是的,为了在分区之间传递,我希望两种状态之间的转换会更慢。但是对现有值的已删除/未删除查询会更快,尽管不涉及删除状态的查询不会得到改进。
一切都是关于表中最常见的操作是什么,并接受可能存在的妥协。
关于MySQL:分区是处理删除的好方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4115732/