3

我有两种选择在我的数据库中存储日期和时间。

  1. 从 php 中的 time 函数生成时间和日期,然后将其存储在数据库中,以 int 数据类型为 4 个字节。

  2. 在插入数据库期间将时间和日期生成为 8 字节的 datetime 数据类型。

我的问题是,如果我使用日期和时间列进行排序,哪种类型会使我的 SQL 查询更快。

4

3 回答 3

2

我总是讨厌它在包含人类不可读的日期和时间值int格式的数据库上构建查询。

如果您使用,查询可能会快一纳秒,int但它真的值得吗?我拒绝!

于 2012-06-03T14:52:56.273 回答
2

使用TIMESTAMP数据类型。它存储为数字,但返回格式。因此,它的排序速度更快,并且更易于阅读。

于 2012-06-03T14:53:28.567 回答
0

您最好使用数据库的本机格式来存储日期时间。

我几乎看不到任何情况下您会为此目的使用另一种二进制格式。这将使数据库的该组件基本上无法用于其他访问方法。

至于人类可读性,您可以通过让视图访问以人类可读格式提供日期的表(在其他数据库中,您可以定义具有计算列的表)来解决该问题。此外,了解数据库的工具应该以人类可读的格式生成输出。

除非你有一个非常大的数据库或者处于一个非常严格的限制环境中,否则不要担心存储。您可能没有考虑当您允许列为 NULL 时存储的额外位,或者当它们在硬件字边界上未对齐时可能在字段之间进行的额外填充,或者因为记录不对齐而导致数据页上的空白空间'不对齐页面边界。

如果空间是一个如此重要的考虑因素,那么您可能想要开发自己的日期/时间格式,看看是否可以将其缩小到 2 或 3 个字节。

于 2012-06-03T15:19:32.620 回答