首页 > 解决方案 > 是否有理由不在每个表中放置时间戳?

问题描述

我正在向一些重要的表添加createdupdated时间戳列,并想知道为什么我不应该将它们放在几乎每个表中“只是为了拥有”,因为存储很便宜。在某种程度上这是不好的做法吗?我是不是很迂腐?

具体来说,我说:

created TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated TIMESTAMP

标签: mysqlsqldatabase-designtimestamp

解决方案


我觉得你的想法很好。我创建的几乎所有表都有以下列:

  • createdAt -- 创建日期时间
  • createdBy -- 谁插入了行

而有时:

  • createdOn -- 该行是在哪个系统上创建的

我倾向于不经常使用updates(我更喜欢维护所有版本并获取最新版本),但这似乎也是一个好主意。

主要的缺点是这占用了每一行的空间。该空间不仅占用空间,而且还意味着每个数据页上可以存储的行数更少——稍微减慢了一些查询。如果您的表有数千或数百万行,那可能不是问题。如果它们有数十亿行,则开销可能是个问题。

在我看来,可维护性的好处远远超过了空间问题。


推荐阅读