如何减少日期数据类型的表大小?

时间:2016-03-22 05:47:26

标签: mysql

我正在保存表的数据,如下所示。

create table A
(
    RecordDate date not null, -- 3 bytes 
    SomeNumber int not null, -- 4 bytes 
)

对于每个单日历日,表A的大约20,000条记录被创建,具有相同的RecordDate,但是SomeNumber不同。这使RecordDate成为许多记录的冗余,我觉得有一些空间可以减少表的大小。有没有办法可以在不丢失日期信息的情况下削减表格A的大小?感谢。

1 个答案:

答案 0 :(得分:0)

根据我的评论,即使每天有20,000笔交易,我也不认为值得您付出相应的努力。我怀疑每天数以百万计的交易是不值得的。 A'日期' field使用3个字节的数据,这已经是数据库中最小的数据类型之一。

但是,我认为这是一个有趣的问题。

Bansi的建议是一个非常节省空间的解决方案(有一个包含最小和最大订单号的日期表),但没有任何表键,你可能(会)破坏你的数据,而且很难修复或甚至知道它已经坏了。您还会大量增加查询时间,因为它必须对每条记录进行两次计算才能找到范围内的日期。

我的解决方案是一个维度建模样式日期表,带有日期键和日期。您的交易表将存储您要加入的日期键。为了使这成为任何好处,日期密钥必须是一个小小的'类型(2个字节)。您可以为每行节省1个字节减去日期表本身相对无关紧要的金额。

请注意,使用' smallint'将您的日期数限制为65,535个不同日期,如果日期连续,则约为180年。