mysql - 是否有理由不在每个表中放置时间戳?
问题描述
我正在向一些重要的表添加created
和updated
时间戳列,并想知道为什么我不应该将它们放在几乎每个表中“只是为了拥有”,因为存储很便宜。在某种程度上这是不好的做法吗?我是不是很迂腐?
具体来说,我说:
created TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated TIMESTAMP
解决方案
我觉得你的想法很好。我创建的几乎所有表都有以下列:
createdAt
-- 创建日期时间createdBy
-- 谁插入了行
而有时:
createdOn
-- 该行是在哪个系统上创建的
我倾向于不经常使用update
s(我更喜欢维护所有版本并获取最新版本),但这似乎也是一个好主意。
主要的缺点是这占用了每一行的空间。该空间不仅占用空间,而且还意味着每个数据页上可以存储的行数更少——稍微减慢了一些查询。如果您的表有数千或数百万行,那可能不是问题。如果它们有数十亿行,则开销可能是个问题。
在我看来,可维护性的好处远远超过了空间问题。
推荐阅读
- python - 导入运算符时出错 (Python)
- c# - List<> 项目值更改事件
- python - 在 discord.py 中 ping 一个角色
- google-cloud-platform - 如何通过api导入知识库?
- python - 什么是保存我所有的工作流 python 包以供以后使用的整洁方法,这样它们都有自己的 setup.py 文件?
- java - 将两个列表与一个 JAVA 流进行比较不起作用
- postgresql - 在 postgres 中将一个数据库链接到另一个数据库是错误的吗?
- javascript - 无序 JSON 中的 Javascript 无限下一个
- java - 是否有 JavaFX 方法可以将文件添加到操作系统最近的文件中?
- c# - 在文本文件中搜索多个单词