[英]Best way to query calendar events?
我正在创建一个日历,其中显示了一个月的活动时间表。 每天都有几个参数来确定是否可以在这一天安排更多活动(有多少工作人员,有多少时间等)。
我的数据库是使用三个表设置的:
在此阶段,代码循环遍历一个月中的每一天,每天检查两到三件事。
第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 ...
而不是30
查询,您只能通过JOIN
获得一个查询。
其他RDBMS
允许您即时生成行集,而MySQL不允许 。
不过,您可以用ugly代替t_month
SELECT 1 AS month_day
UNION ALL
SELECT 2
UNION ALL
...
SELECT 31
我想不出有充分的理由将每个查询限制为一天。 当然,您可以选择一对日期之间的所有值。
同样,您可以使用联接来获取给定日期的事件计划的事件数。
然后对数据库查询返回的数组进行循环(每天)。
我在http://rosterus.com上遇到了同样的问题,我们只是将大部分数据加载到页面顶部的数组中,然后在数组中查询相关数据。 此后,页面加载速度提高了10倍。
因此,运行一个或两个广泛的查询来收集所需的所有数据,选择适当的键并将每个结果存储到数组中。 然后访问阵列而不是数据库。 PHP在数组索引方面非常灵活,您可以将各种东西用作键...或多个索引。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.