如何在MySQL性能方面组织日历日期的存储
我必须为数据库中的几乎每个表存储2个日期,例如客户tbl用户tbl雇主tbl职位tbl付款tbl测验tbl电子邮件提醒等 大多数时候,我存储“创建日期”和“修改日期”,有时很少额外存储日期 在MySQL数据库中存储日期的最佳方法是什么?性能方面(以后可能会有很多客户的站点,可能是500000+) 选项1:为每个表添加两列日期 选项2:专门为日期创建表“待定日期” 我想选项2会更快,因为我只需要在一个特定页面上显示日期,例如“report.php”对吗 还有,我应该在“tbl_dates”中输入max多少列,而不会使它太慢。对于一般情况(行创建和行修改时间戳),我会将它们放在与其相关的同一个表中。否则,您会发现,与简单方法相比,所需的后续连接会更慢地执行查询 在任何情况下,您都不想养成构建“通用表”的习惯,许多表都可以如何在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
连接到这些“通用表”
——这是因为理想情况下,您可以为每个关系创建外键,但如果某些行属于tbl_客户机
,而某些行属于tbl_用户
,则这将不起作用。。。(等等)
诚然,您的MySQL引擎可能会阻止您使用外键(具体取决于您使用的外键),但(至少对我来说)关键在于此。将它们存储在表级别。只需确保您使用的是本机日期类型。通过尝试在外部表上记录日期,您将为自己创建更多的工作。为什么不在表
tbl\u users
中创建字段user\u id
主键,然后将其值添加到与之相关的其他每一个表的列user\u id
或者使用第三个表将
tbl_用户
primary id与tbl_客户端
primary id连接起来,我总是宁愿存储多个表而不是一个表,然后使用
左连接
我从来没有遇到过这样的问题,实际上更清楚的是将数据放在不同的表中,并将使用同一个表的50列的用户连接起来。除此之外,join与任何其他方法具有相同的速度,您只需向数据库中用于join的某些字段添加索引即可。如果(a)只有tbl_用户的一小部分
行具有创建/修改时间戳,或者(b)只有一个单独的表才有价值一行可能有多个创建/修改时间戳。据我所知,这两种可能性都不是真的,所以你会毫无理由地增加复杂性。