MySQL:使用DATETIME作为主键

时间:2011-02-16 21:51:28

标签: mysql database-design

我的数据库将存储大量数据点,因此我使用无符号BIGINT作为主键。

使用DATETIME对象作为主键是否有意义?

谢谢,

5 个答案:

答案 0 :(得分:14)

是的,如果您需要唯一地识别离散点或时间段,那么将日期/时间作为键的一部分或其中一部分是有意义的。我不能说这是否适用于您的场景,但作为一般规则,没有根本原因为什么密钥不能基于时间 - 几乎任何数据仓库都会这样做。

答案 1 :(得分:4)

不,因为无法保证它是唯一的。坚持用BIGINT。你可以在DateTime上放一个很好的索引进行查询,这样就足够了。

答案 2 :(得分:3)

没有任何意义,因为你没有任何实际理由,每秒只能限制一张唱片。

答案 3 :(得分:3)

如果您的数据来自单个按时间排序的集合,那么这是有意义的。比如,金融交易的记录。如果您有多个数据点,这些数据点在不同时刻自然发生,但由于四舍五入而具有相同的时间戳,请更改低位以区别它们。

MySQL中的more problematicother数据库中的{{3}} {{3}},因为时间戳的存储精度只有1秒。

答案 4 :(得分:2)

如果碰巧每秒有多次观察,这将失败。因此,除非你能保证每秒不会有超过一个点,否则最好不要这样做。