按YEAR划分的MySQL:date vs timestamp

时间:2014-04-16 14:22:28

标签: mysql database-partitioning

我有一张巨大的桌子,我即将分区。它有一个复合的4元素主键。其中一个要素是记录时间,这是一个很好的候选人。 MySQL手册提供了大量示例,DATE字段RANGE YEAR是一个非常有效的分区键。

我的问题是我有timestamp而不是dateMySQL docs声明可以使用timestamp

  

从MySQL 5.1.43开始,也可以对表进行分区   通过RANGE基于TIMESTAMP列的值,使用   UNIX_TIMESTAMP()函数

但它并没有对性能发表任何评论。问题是:datetimestamp中的哪一个作为分区键会更快?如果DATE更好,我会考虑更改主键。我将划分一年分区或半年分区中的所有数据。

2 个答案:

答案 0 :(得分:0)

唯一可以确定它能看到基准的方法。

我从来没有做过,所以我的回答可能是错的。

在我看来,DATE应该比TIMESTAMP更快,因为它存储的信息更少,因此更容易使用。此外,因为它是第一个支持分区的人应该告诉你它可以更好地实现(不是说TIMESTAMP版本会被严格实现)。

但我问你的问题是DATETIMESTAMP的良好替代品,因为你会失去很多精确度。

答案 1 :(得分:0)

另一项重要检查是每个字段的字节数。

DATE = 3个字节

TIMESTAMP = 4个字节

http://dev.mysql.com/doc/refman/5.1/en/storage-requirements.html