使用BIGINT或DOUBLE(Unix时间)的DATETIME类型的时间信息

时间:2017-08-18 13:17:12

标签: mysql performance datetime mysql-5.5

假设我被mysql 5.5困住了,我无法更改为5.65.7,因此我无法使用DATETIME小数秒,这是我需要的信息。我想知道什么是最好的解决方案。我一直在考虑的其中一个选择是使用BIGINT以bash命令date +%s%N(unix时间)或DOUBLE的形式保存信息,如果我想分隔秒和几分之一秒(即date +%s.%N)。

这种配置会有什么缺点?除了不使用标准格式。

2 个答案:

答案 0 :(得分:1)

您可以使用BIGINT以毫秒(Javascript时间戳)存储Unix时间。

或者,您的其他任何解决方案(DOUBLE中的小数秒时间或BIGINT中的unix时间)都可以使用。

对于任何大小的表来说,重要的是能够索引列。

答案 1 :(得分:1)

  • 任何使用datetime函数都需要以某种方式进行修改。这应该不是什么大问题,只需要为编写输入和显示的代码添加更多代码。
  • BIGINT是8个字节。这导致更多的磁盘空间;可能不是一个严重的问题。
  • WHERE条款,范围测试,ORDER BY等没有问题; DATETIMETIMESTAMPBIGINTDOUBLE都允许所有变体。
  • 任何表现差异都是微不足道的。但一定不要“在函数调用中隐藏索引列”。

Java用户一直这样做(BIGINT中的毫秒)。