【问题标题】:What is faster for only date search DATETIME or DATE format仅日期搜索 DATETIME 或 DATE 格式更快的是什么
【发布时间】:2015-11-17 18:49:39
【问题描述】:

我正在为活动策划者绘制表格。我所有的活动都有日期和时间,但搜索将只使用日期。时间不会用于搜索。

使用 DATE 存储、搜索、索引行会比使用 DATETIME 格式快得多吗?

我将事件日期和时间存储为 DATETIME 类型更方便,但我更关心速度。

【问题讨论】:

  • 您打算拥有多少条记录?除非您有数百万条记录,否则这不太可能有明显差异。
  • 是的,如果您只对使用日期存储它的日期部分感兴趣,那么对于相等搜索的最佳性能将具有最佳性能。如果需要首先在每个值上剥离时间部分,甚至不确定索引是否可用于相等搜索。
  • 我同意,除非这是具有大量记录的东西,否则可能还有其他优化可以为您的工作带来更多好处。
  • 您可以仅在“日期”部分创建索引stackoverflow.com/questions/10595037/…,因此只有日期的索引,同时存储完整的日期时间。或者如果您的版本支持,请使用“生成的列”。
  • @HLGEM 我不希望我的表超过 500K 行。

标签: mysql database datetime


【解决方案1】:

我没有对其进行基准测试,但根据我对 MySQL 代码的了解,我预计在正常使用情况下差异会很小。 DATE 使用 3 个字节进行存储,而 DATETIME 使用 8 个字节。这种差异在某些异常情况下会很显着,例如如果DATE/DATETIME 列是具有数百万行的表中仅有的一个或极少数列之一,或者如果您有很多这样的列。在正常使用情况下,DATETIME 的开销相对于其他数据库操作将被淹没。如果您拥有良好的键并且能够避免表扫描以及数千次不必要的DATE/DATETIME 比较,情况尤其如此。所以我想说不要担心,只需使用DATETIME

【讨论】:

  • 要使索引在具有DateTime 列时可用,如果该列的类型为Date,则查询需要写为Where tbl.column < @nextDate and tbl.column > @prevDate,而不是Where tbl.column = @date
猜你喜欢
  • 1970-01-01
  • 2012-05-25
  • 1970-01-01
  • 2013-05-23
  • 2015-09-01
  • 2014-10-08
  • 1970-01-01
  • 1970-01-01
  • 2022-12-02
相关资源
最近更新 更多