我有一张巨大的桌子,我即将分区。它有一个复合的4元素主键。其中一个要素是记录时间,这是一个很好的候选人。 MySQL手册提供了大量示例,DATE
字段RANGE YEAR
是一个非常有效的分区键。
我的问题是我有timestamp
而不是date
。 MySQL docs声明可以使用timestamp
:
从MySQL 5.1.43开始,也可以对表进行分区 通过RANGE基于TIMESTAMP列的值,使用 UNIX_TIMESTAMP()函数
但它并没有对性能发表任何评论。问题是:date
,timestamp
中的哪一个作为分区键会更快?如果DATE
更好,我会考虑更改主键。我将划分一年分区或半年分区中的所有数据。
答案 0 :(得分:0)
唯一可以确定它能看到基准的方法。
我从来没有做过,所以我的回答可能是错的。
在我看来,DATE
应该比TIMESTAMP
更快,因为它存储的信息更少,因此更容易使用。此外,因为它是第一个支持分区的人应该告诉你它可以更好地实现(不是说TIMESTAMP
版本会被严格实现)。
但我问你的问题是DATE
是TIMESTAMP
的良好替代品,因为你会失去很多精确度。
答案 1 :(得分:0)
另一项重要检查是每个字段的字节数。
DATE = 3个字节
TIMESTAMP = 4个字节
http://dev.mysql.com/doc/refman/5.1/en/storage-requirements.html