Php FullCalendar和MySQL--优化我的查询
我有一个后续问题,是关于我以前在这方面遇到的一个问题。我想知道如何进一步优化/完善我的问题 我以前的问题是:Php FullCalendar和MySQL--优化我的查询,php,mysql,Php,Mysql,我有一个后续问题,是关于我以前在这方面遇到的一个问题。我想知道如何进一步优化/完善我的问题 我以前的问题是: -- OLD QUERY -- SELECT start, end, title, details, location FROM event WHERE (start >= 2012-02-26 00:00:00 AND end <= 2012-04-01 00:00:00) AND user_id= $user_id; 这个查询非常有效,因为它不获取旧事件,比如从1月份开
-- OLD QUERY --
SELECT start, end, title, details, location
FROM event
WHERE (start >= 2012-02-26 00:00:00 AND end <= 2012-04-01 00:00:00)
AND user_id= $user_id;
这个查询非常有效,因为它不获取旧事件,比如从1月份开始。因此,查询是快速有效的。但是,对于可能在下个月出现重叠的查询,它不起作用。假设一个活动的开始日期为2012-03-29,但结束日期为2012-04-05。那么,它就不会被拉入查询,因此,不会显示
因此,我的新问题是:
-- NEW QUERY --
SELECT start, end, title, details, location
FROM event
WHERE (end > 2012-02-26 00:00:00 OR start < 2012-04-01 00:00:00)
AND user_id= $user_id;
但是,在新的查询中,它最终拉取了2012年2月26日之前的所有事件,因此速度非常慢,效率低下
如何优化此查询以实现以下两个目标:
a让它工作,以便它收集跨越一个月末到另一个月末的事件?
b同时不询问过去的每一个其他事件
希望有办法做到这一点!非常感谢您的意见。您是否尝试在where语句中添加额外的and 差不多
SELECT start, end, title, details, location
FROM event
WHERE (end > $start OR start < $end)
AND user_id= $user_id AND $end >CURDATE();
这似乎只会吸引尚未结束的事件 若要查找重叠事件,请更改或,并在您的查询中稍微更改日期以仅与三月重叠:
WHERE (end >= '2012-03-01' AND start < '2012-04-01')
你的问题我不清楚,你能简化一下吗?嗨,天哪,我试着简化我上面的要求。嗨,安德鲁,谢谢你的回复。我试过这个,但后来它吸引了每一个未来的事件。因此,如果某个人在2015年期间一直有1000个事件,那么它们都会出现在响应中。它不应该比您最初的查询做的更多。Where语句通常限制数据,而不是向其中添加更多数据。你最初的查询是什么?这看起来确实有效。非常感谢你在这件事上的帮助。