|
|
1
4
可能对您的应用程序造成了过度破坏-但是: 以使“写入”过程更复杂为代价改进搜索的相对简单的方法是更改预订表,使其成为“可用性”表。 在一个布尔列中添加一个值,以指示插槽是空闲的还是已预订的(或者更好的是,仍然输入已预订插槽的客户的ID,如果插槽是空闲的,则使用0)。 从2009年1月1日至12月31日的一个免费时段开始?? 当你得到一个预订时,把免费的时段分成3个(两个插入和一个更新)、预订的时段和两个可用的时段。 继续这样做,随着时间框架变得越来越零碎,预订过程将包括以下内容之一:
管理起来并不复杂,搜索过程变成了一个简单的查询:在所需的时间范围内查找任何可用的时段(booked=false或customerid=0,无论采用哪种方式),其中enddate-startdate>=所需的天数。 它使预订/可用性表的大小翻了一番,并使预订变得不那么简单,但需要权衡的是,搜索过程尽可能简单。 |
|
|
2
4
表定义会有帮助,但这里是。这应该适用于MS SQL Server,但一旦理解了其背后的想法,将其转换为MySQL应该是一项微不足道的任务。 日历表只是一个标准实用程序表,其中包含数据库中有用的所有日期。如果您还没有,我建议您创建一个并填充它。
然后,您需要用可能对您的业务有意义的任何日期填充该表。即使你追溯到100年前100年后,表中的行数仍然少于75K,而且它在日期上聚集在一起,所以它应该是快速且容易处理的。它使许多基于日期的查询更加简单。
或者:
|
|
|
Patrick Bond · 如何将模型中的函数结果添加到列表中? 8 月前 |
|
|
bur · 每次从模板调用方法都会查询数据库吗? 8 月前 |
|
|
Stefan · 在子目录中设置Django 9 月前 |
|
|
vale383 · 如何在Django端点中查找user_id 9 月前 |
|
|
Kovy Jacob · Django在动态URL段中添加斜线 9 月前 |
|
|
user987 · 如何在Django中访问提交的表单请求数据 9 月前 |
|
|
user24242514 · 将嵌套查询字符串请求转换为字典 9 月前 |