【发布时间】:2021-05-10 23:44:08
【问题描述】:
我正在考虑为我的数据编制索引的最佳方式。使用时间戳作为我的主键是个好主意吗?无论如何我都在保存它,我想保存一些列。由于性能原因,时间戳应该是整数而不是日期时间列。此外,我不想在短时间内(两秒之间)限制数据量。因此,我想到了一个额外的 AUTO_INCREMENT 列。现在我有一个唯一的键(时间戳和 AI),我可以使用命令“LAST_INSERT_ID”轻松获取当前插入的 id。是否可以每秒/有新时间戳时重置 AI 计数器?或者是否可以检测是否有相同时间戳的数据集并增加AI值(我仍然希望能够使用LAST_INSERT_ID)。
请分享一些想法。
【问题讨论】:
-
使用时间戳作为主键不是一个好主意 - 迟早会需要同时插入 2 行的情况,它会失败。 AI 始终是唯一的,将其用作您的 PK,但如果您需要经常在 WHERE 子句过滤器中使用它,请在时间戳上创建一个索引。
-
“由于性能原因,时间戳应该是整数而不是日期时间列。” -- 时间戳类型不正确,
integer,将导致相反的结果。迟早您需要使用日期/时间算术进行查询,并且必须昂贵地转换时间戳才能使用内置函数和运算符。
标签: mysql performance auto-increment