MySql:保存日期范围VS保存单日

时间:2016-05-10 09:50:23

标签: php mysql performance

我目前正在开发一个简单的预订系统,我需要选择一些范围并将它们保存到mysql数据库。

问题我面临的问题是决定保存范围是否更好,或者单独保存每天。

将有大约500个房产,每个房产预订2到5个月。

因此,客户将插入他的财产,并将选择一些不可用的日期。当有人预订房产时也会发生同样的情况。

我原本想要一个单独的表来表示不可用的日期,所以如果一个房产从10月5日到20日预订,而不是有一条记录(2016-06-10 => 2016-06-20)我将有10条记录,每个预订日一条

我认为在日期之间搜索时更容易使用,但我不确定。

表现会更糟糕吗?

我应该保存范围还是单日?

谢谢

2 个答案:

答案 0 :(得分:2)

我会建议所有"事件"进入一个表,他们都有一个开始和结束日期时间。当然建议在这些字段上使用索引。

原因是当您在寻找预订和可用事件时 - 您不是从两个不同的表中选择(或加入它们)。并且存储整个范围对于代码来说要好得多,因为您可以在SQL查询中轻松执行检查,并且处理事件的所有PHP代码都是两者的标准。如果您只将一种事件类型与另一种事件类型存储方式不同,那么您将会发现#34;如果"和#34;在你的代码中,发现编写SQL更难。

我目前运行了很多预订系统并且在这方面犯了错误,所以我知道这是一个很好的建议 - 也是一个很好的问题。

答案 1 :(得分:1)

这对评论来说太过分了,所以我将此作为回答

因此表的主键是property_id和特定月份的日期。 我不推荐它。因为考虑到你将这个逻辑应用到5年或10年系统的情况,性能会更差。你将获得大约 30 * 12 * 1 = 360 raws 1年。实施一个逻辑来计算预订的持续时间,并将其添加到针对用户的表格中。