gpt4 book ai didi

mysql - 在 mysql : Performance comparison between various methods for Date 中存储日期

转载 作者:可可西里 更新时间:2023-11-01 06:42:15 24 4
gpt4 key购买 nike

现在我想到了三个选项。

1st -> 四列(日、月、年、日)=> 28, 03, 2011, 1我可以轻松地搜索和修改这些列,而无需额外学习 mysql 日期。

2nd -> 一个日期列 (dd-mm-yyyy) => 28-03-2011这只需要一列,更易于管理,因为只有一个 WHERE 参数用于搜索日期。但我不知道如何搜索某一天的所有记录。假设过去所有星期一的所有数据或所有 28 日的所有数据。

3rd -> 两列(今天日期的 unix 时间戳)=> 1827328721, 1现在,在这里我可以将数据存储为时间戳,并通过简单地获取日期然后将其转换为 unix 时间戳然后在 sql 中使用它来轻松地进行搜索和比较。对于 day,我可以使用 day 列。

现在问题是:

  1. 这些方法的性能有何不同?
  2. 如何为这些不同的建议解决方案构建选择、插入和更新查询?
  3. 您认为哪一个最好,为什么?

请彻底回答所有三个问题。因为我在其他地方找不到这些信息,而且我知道堆栈溢出有才华横溢的程序员可以非常连贯地回答这个问题。这个问题不仅对像我这样的新手有帮助,而且对所有可以引用此问题的新手都有帮助。

提前感谢 Stack overflow 社区。

最佳答案

How does the performance differ between these methods?

这将根据使用数据库的应用程序类型而有很大差异。

第一种方法可被视为非规范化方法,但如果数据用于 OLAP 应用程序,这可能是个好主意。例如,如果您经常需要收集一个月中特定日期的大量数据集,那么这种反规范化可能是合理的……否则,这只会​​浪费存储空间并且不必要地复杂化。

与第三个选项相同...它只是日期的非规范化表示;它在非常有限的用途中可能是合理的,但通常这将是一个坏主意。

--编辑--

通过去规范化,我指的是以下......

假设您有一条包含以下字段的记录...

Date       Day    Month    Year
3/28/2011 28 3 2011

假设您需要将日期从 28 日更改为 29 日。在这种情况下,您需要更新两个字段,即 Date 和 Day 字段……而不仅仅是一个。如果您始终记得更新两者,那么这不是一个大问题。但如果你不这样做,随着时间的推移,你最终会得到类似下面的结果。

Date       Day    Month    Year
3/28/2011 29 2 2009

那么实际日期是多少?通过将信息存储在一个地方,您可以消除数据不一致的可能性。

-- 结束编辑--

Which one is best in your opinion and why?

除非您的数据库用于 OLAP...我认为第二个选项是最好的。

How would the queries for selects, inserts and updates be constructed for these different proposed solutions?

对于首选的第二个选项,这是微不足道的。

-- 第二次编辑--

您可以将日期作为字符串传入,MySQL 将根据它进行解析。日期格式为“YYYY-MM-DD HH:mm:SS”,但如果不想存储则不必指定时间。

INSERT INTO tablename (date) VALUES ('2011-3-28')

或者,如果您只想添加当前日期...

INSERT INTO tablename (date) VALUES (CURDATE() )

-- 结束编辑--

关于mysql - 在 mysql : Performance comparison between various methods for Date 中存储日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5464102/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com