Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在MySQL性能方面组织日历日期的存储_Mysql_Date_Database Performance - Fatal编程技术网

如何在MySQL性能方面组织日历日期的存储

如何在MySQL性能方面组织日历日期的存储,mysql,date,database-performance,Mysql,Date,Database Performance,我必须为数据库中的几乎每个表存储2个日期,例如客户tbl用户tbl雇主tbl职位tbl付款tbl测验tbl电子邮件提醒等 大多数时候,我存储“创建日期”和“修改日期”,有时很少额外存储日期 在MySQL数据库中存储日期的最佳方法是什么?性能方面(以后可能会有很多客户的站点,可能是500000+) 选项1:为每个表添加两列日期 选项2:专门为日期创建表“待定日期” 我想选项2会更快,因为我只需要在一个特定页面上显示日期,例如“report.php”对吗 还有,我应该在“tbl_dates”中输入m

我必须为数据库中的几乎每个表存储2个日期,例如客户tbl用户tbl雇主tbl职位tbl付款tbl测验tbl电子邮件提醒等

大多数时候,我存储“创建日期”和“修改日期”,有时很少额外存储日期

在MySQL数据库中存储日期的最佳方法是什么?性能方面(以后可能会有很多客户的站点,可能是500000+)

选项1:为每个表添加两列日期

选项2:专门为日期创建表“待定日期

我想选项2会更快,因为我只需要在一个特定页面上显示日期,例如“report.php”对吗

还有,我应该在“tbl_dates”中输入max多少列,而不会使它太慢。

对于一般情况(行创建和行修改时间戳),我会将它们放在与其相关的同一个表中。否则,您会发现,与简单方法相比,所需的后续连接会更慢地执行查询

在任何情况下,您都不想养成构建“通用表”的习惯,许多表都可以
连接到这些“通用表”
——这是因为理想情况下,您可以为每个关系创建外键,但如果某些行属于
tbl_客户机
,而某些行属于
tbl_用户
,则这将不起作用。。。(等等)


诚然,您的MySQL引擎可能会阻止您使用外键(具体取决于您使用的外键),但(至少对我来说)关键在于此。

将它们存储在表级别。只需确保您使用的是本机日期类型。通过尝试在外部表上记录日期,您将为自己创建更多的工作。为什么不在表
tbl\u users
中创建字段
user\u id
主键,然后将其值添加到与之相关的其他每一个表的列
user\u id

或者使用第三个表将
tbl_用户
primary id与
tbl_客户端
primary id
连接起来,我总是宁愿存储多个表而不是一个表,然后使用
左连接
我从来没有遇到过这样的问题,实际上更清楚的是将数据放在不同的表中,并将使用同一个表的50列的用户连接起来。除此之外,join与任何其他方法具有相同的速度,您只需向数据库中用于join的某些字段添加索引即可。如果(a)只有
tbl_用户的一小部分
行具有创建/修改时间戳,或者(b)只有一个单独的表才有价值一行可能有多个创建/修改时间戳。据我所知,这两种可能性都不是真的,所以你会毫无理由地增加复杂性。