Php 查询日历事件的最佳方式?

Php 查询日历事件的最佳方式?,php,mysql,database,Php,Mysql,Database,我正在创建一个日历,显示一个月的活动时间表。每天都有几个参数,这些参数决定了这一天是否可以安排更多的活动(有多少员工可用,有多少时间可用等) 我的数据库使用三个表进行设置: 常规计划-用于为一周中的每一天创建一个数组,其中列出了可用的员工数量、可用时间等 计划变更-如果日期存在变更,则会覆盖常规计划数组中的信息 事件-由日期引用的现有事件 在这个阶段,代码循环一个月中的几天,每天检查两到三件事情 日程安排是否有任何变化(公共假日、更短的工作时间等) 这一天的工作时间/人数是多少 (如果有工作人员

我正在创建一个日历,显示一个月的活动时间表。每天都有几个参数,这些参数决定了这一天是否可以安排更多的活动(有多少员工可用,有多少时间可用等)

我的数据库使用三个表进行设置:

  • 常规计划-用于为一周中的每一天创建一个数组,其中列出了可用的员工数量、可用时间等
  • 计划变更-如果日期存在变更,则会覆盖常规计划数组中的信息
  • 事件-由日期引用的现有事件
  • 在这个阶段,代码循环一个月中的几天,每天检查两到三件事情

  • 日程安排是否有任何变化(公共假日、更短的工作时间等)
  • 这一天的工作时间/人数是多少
  • (如果有工作人员)这一天已经安排了多少活动
  • 第1步和第3步需要数据库查询——假设每月30天,即每个页面视图60次查询

    我担心这会如何扩展,对于一些用户来说,我不认为这会是一个很大的问题,但是如果有20个人同时尝试加载页面,那么它会跳到1200个查询

    如果您有任何关于如何更有效地完成此任务的想法或建议,我们将不胜感激

    谢谢

    创建一个表:

    t_month (day INT)
    
    INSERT
    INTO     t_month
    VALUES
             (1),
             (2),
             ...
             (31)
    
    然后查询:

    SELECT   *
    FROM     t_month, t_schedule
    WHERE    schedule_date = '2009-03-01' + INTERVAL t_month.day DAY
             AND schedule_date < '2009-03-01' + INTERVAL 1 MONTH
             AND ...
    
    创建一个表:

    t_month (day INT)
    
    INSERT
    INTO     t_month
    VALUES
             (1),
             (2),
             ...
             (31)
    
    然后查询:

    SELECT   *
    FROM     t_month, t_schedule
    WHERE    schedule_date = '2009-03-01' + INTERVAL t_month.day DAY
             AND schedule_date < '2009-03-01' + INTERVAL 1 MONTH
             AND ...
    

    我想不出一个好的理由,你需要把每个查询限制在一天之内。当然,您可以选择一对日期之间的所有值

    类似地,您可以使用联接来获取给定日期的事件计划事件数


    然后对数据库查询返回的数组执行循环(每天)。

    我想不出有什么好的理由需要将每个查询限制为一天。当然,您可以选择一对日期之间的所有值

    类似地,您可以使用联接来获取给定日期的事件计划事件数


    然后对数据库查询返回的数组执行循环(每天)。

    我遇到了类似的问题,我们只需将大部分数据加载到页面顶部的数组中,然后查询数组中的相关数据。之后页面加载速度提高了10倍


    因此,运行一个或两个广泛的查询,收集您需要的所有数据,选择适当的键,并将每个结果存储到一个数组中。然后访问数组而不是数据库。PHP是非常灵活的数组索引,你可以使用各种东西作为键。。。或者几个索引。

    我也遇到了类似的问题,我们只是将大部分数据加载到页面顶部的数组中,然后查询数组中的相关数据。之后页面加载速度提高了10倍


    因此,运行一个或两个广泛的查询,收集您需要的所有数据,选择适当的键,并将每个结果存储到一个数组中。然后访问数组而不是数据库。PHP是非常灵活的数组索引,你可以使用各种东西作为键。。。或多个索引。

    感谢所有的答案。放入阵列非常适合我的需要。再次感谢!谢谢你的回答。放入阵列非常适合我的需要。再次感谢!