【问题标题】:Which is most suitable datatype for storing time and date哪种数据类型最适合存储时间和日期
【发布时间】:2012-06-07 22:26:01
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: php mysql sql datetime time


    【解决方案1】:

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

    如果您使用int,查询速度可能会快一纳秒,但这真的值得吗?我说不!

    【讨论】:

    • datetime 使用的额外 4 个字节不会使我的数据库变大
    • 如果该表中有 100 万条记录,那么 datetime 列需要 8MB。那没什么。考虑一个带有char(100) 列的表。 100 万条记录需要 100MB。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

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

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

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

      【讨论】:

      猜你喜欢
      • 2019-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-28
      • 2017-03-02
      • 2012-03-02
      • 1970-01-01
      • 2011-02-27
      相关资源
      最近更新 更多