我不是SQL方面的专家,我需要询问有关设置包含约会的表的最佳方法的建议。 我怀疑是关键。
我的想法是:
1 - 使用自动增量列作为约会的ID(例如无符号整数)。 我对这个解决方案的疑虑是:即使指数非常高,指数也可以达到溢出,当记录数量增长时,性能会降低吗?
2 - 每年创建一个表格。 Dubts:保持和执行查询会很复杂。
3 - 使用复合索引。 Dubts:怎么设置
4-其他?
感谢。
答案 0 :(得分:0)
使用自动增量主键。在整数溢出之前,MySQL将无法处理增长的表。
即使你没有主键,MySQL的性能也会下降。这时您将开始考虑分区(您的选项2)和归档旧数据。但从一开始,单个表上的自动增量主键就可以了。答案 1 :(得分:0)
1 - 你认为你会超过40亿行吗?如果您没有适合您的查询的索引,性能会降低,因为表格大小,不。 (好吧,有一点点退化,但不值得担心。)基于182K /年,MEDIUMINT UNSIGNED
(最多16M)就足够了。
2 - 不!这是一个常见的问题;答案永远是"不要创建相同的表"。
3 - 表的哪一列或哪些列组合是唯一的?只需在PRIMARY KEY (...)
通常首选3号。如果没有唯一列,请使用数字1。
每年182K行不能证明PARTITIONing
。如果您期望超过一百万行,请考虑它。 (这里有一个简单的预测:你将重新设计这个模式,然后182K增长到一百万。)