我正在构建一个数据库,编译来自各种来源的各种新闻文章,并且我正在尝试找出最有效的方法来对文章的撰写日期进行分类。
就目前而言,我正在考虑使用一个包含所有日期的表,然后将数据库中的文章条目指向日期表中的相应条目。
显然,我想到了几个问题,尤其是我必须创建的日期列表令人难以置信的笨拙和过长。
有没有更有效的方法来做到这一点?请记住,我的数据库中的几个表将使用日期表。
在此先感谢您,感谢您阅读我的文章...
正如 Ethan 所建议的,只需将日期存储在与文章相同的表中,无需查找。
您可能希望将文章的一些细节与文本正文分开存储,以潜在地加快搜索速度,但我会从简单开始。将所有相关数据存储在一个表中,只有在运行缓慢时才使用分区(避免过早优化)。
除了您的主表之外,我建议您创建一个辅助日历表来协助基于日期的查询。和你说的相反:
...我必须创建的日期列表非常笨拙且过长。
包含未来 50 年日期的表只有 18k 多行,一点也不多。
如果您要经常使用日期,我建议您看一下Richard Snodgrass 的用 SQL 开发面向时间的数据库应用程序,这是一个很好的资源。
使用MySQL 日期时间格式。不要为日期创建单独的表格。MySQL 针对在每条记录中存储该格式并对其执行操作进行了优化。
为OLAP创建单独的日期表比OLTP更常用,我假设您正在构建一个 OLTP 系统。
创建单独的表的最大问题是您需要为每个可能使用的时间记录一条记录,然后您需要对该表执行查找以找到外键。这根本不是一个好主意。
看到您在问这个问题,我认为您不需要比简单地将日期时间存储在每一行中进行更多优化。如果您正在构建重要的东西,那么您可能会比我更了解。