我有一个巨大的表要分区。它有一个复合的4元素主键。其中一个要素是记录时间,这是一个很好的拍卖关键。MySQL手册给出了很多例子,其中带有RANGE YEAR
的DATE
字段是一个非常有效的分区键。
我的问题是我有timestamp
而不是date
。MySQL文档指出可以使用timestamp
:
从MySQL 5.1.43开始,也可以对表进行分区根据TIMESTAMP列的值,使用UNIX_TIMESTAMP()函数
但它并没有说明性能。问题是:date
和timestamp
中哪一个作为分区键会更快?如果DATE
更好,我正在考虑更改主键。我将把所有数据划分为一年或半年的分区。
唯一可以确定的方法是查看基准。
我从来没有做过,所以我的答案可能是错误的。
在我看来,DATE
应该比TIMESTAMP
更快,因为它存储的信息更少,所以使用起来更容易。此外,由于它是第一个支持分区的版本,因此应该告诉您它可以更好地实现(并不是说TIMESTAMP
版本的实现会很糟糕)。
但我想问你的是,DATE
是否能很好地替代TIMESTAMP
,因为你会失去很多精度。
另一个重要的检查是每个字段的字节数。
DATE=3字节
TIMESTAMP=4字节
http://dev.mysql.com/doc/refman/5.1/en/storage-requirements.html