php - MySql:保存日期范围与保存单日

标签 php mysql performance

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

问题 我面临的问题是决定是保存一个范围更好,还是每天单独保存更好。

将有大约 500 家酒店,每家酒店的预订时间为 2 到 5 个月。

所以客户将插入他的属性并选择一些不可用的日期。当有人预订特性时也会发生同样的情况。

我正在考虑只为不可用的日期创建一个单独的表,所以如果在 5 月 10 日至 5 月 20 日期间预订了一处特性,而不是只有一条记录 (2016-06-10 => 2016-06-20 ) 我将有 10 条记录,每个预订日一条。

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

性能会明显变差吗?

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

谢谢

最佳答案

我建议所有“事件”都放在一个表中,并且它们都有开始和结束日期时间。当然建议在这些字段上使用索引。

原因是,当您寻找预订和可用事件时,您并不是从两个不同的表格中进行选择(或加入)。并且存储完整范围对于代码来说要好得多,因为您可以轻松地在 SQL 查询中执行检查,并且所有用于处理事件的 php 代码都作为两者的标准工作。如果您仅以与另一种不同的方式存储一种事件类型,您会发现代码中有大量“if”,并且会发现编写 SQL 变得更加困难。

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

关于php - MySql:保存日期范围与保存单日,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37134921/

相关文章:

MySQL 错误 (HY000) : Cannot add foreign key constraint

java - 非常快速地搜索 Java 中的特定字符

php - 索引时出现400错误的请求

php - MySQLi bind_param() 错误

php - 向 URL 添加第二个 $_GET 标记会破坏 MySQL ORDER BY 子句

mysql - 如果文本文件的一列中有多个项目,那么如何使用 python 将其导入到 SQL 中?

performance - 我可以远程捕获 Azure Web/辅助角色的性能计数器吗?

java - 在 Java 中复制数据的更快方法?

javascript - 使用 CSS 居中 HTML Div

php - 将运行时创建的文本框值保存在数据库表中