【问题标题】:MySQL paritioning by YEAR: date vs timestampMySQL 按年份分区:日期与时间戳
【发布时间】:2014-04-16 23:00:16
【问题描述】:

我有一张巨大的桌子要分区。它有一个复合 4 元素主键。它的元素之一是记录时间,它是分区键的良好候选者。 MySQL 手册给出了很多例子,其中DATE 字段和RANGE YEAR 是一个非常有效的分区键。

我的问题是我有timestamp 而不是dateMySQL docs 表示可以使用timestamp

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

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

【问题讨论】:

    标签: mysql database-partitioning


    【解决方案1】:

    确定它的唯一方法是查看基准。

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

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

    但我的问题是DATE 是否可以很好地替代TIMESTAMP,因为你会损失很多精度。

    【讨论】:

      【解决方案2】:

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

      日期 = 3 个字节

      TIMESTAMP = 4 个字节

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-04-14
        • 2012-08-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多