问题:我们有一张很大的 table ,而且还在增长。它的大部分条目(比如 80%)是很少查询的历史数据(“DATE”字段在当前日期之后),而其中的一小部分(比如 20%)是当前数据(“DATE”字段在当前日期之后),大多数查询搜索这些当前条目。
考虑两种可能的场景,哪一种会更好(考虑整体实现难度和性能,...)
将大表分成两个表:历史数据和当前数据。并且我每天将过期日期的记录从当前表移至历史表。
在一个表中保存记录(DATA 字段定义为 INDEXED)。
场景 A 表示实现和维护工作更加繁琐,并且每天在表之间移动日期时重载,而场景 B 表示搜索大型数据库(尽管已编入索引)。它会带来内存问题吗?推荐哪个场景?还有其他推荐吗?
最佳答案
您通常不想将一个大表分成多个表,尽管拥有一个当前表和一个历史表是完全合理的。你的过程是有道理的。然后,您可以根据查询需要优化当前表。我可能会选择两个表(鉴于您提供的信息有限),因为它允许进行此类优化。
但是,不要拆分历史数据。相反,使用分区。查看documentation .一个警告:查询需要在 where
子句中指定分区键以利用分区。对于一张大 table ,这无论如何都是典型的。
关于mysql - 在将其分解为多个表之前,MySQL 表应该有多大?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33056281/