关于我以前在SO here上遇到的问题,我有一个后续问题。我想知道如何进一步优化/优化我的问题。
我的旧查询是:
-- 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;
此查询之所以有用,是因为它不会收到旧事件,例如从一月份开始。因此查询是快速有效的。但是,它不适用于下个月可能重叠的查询。 (假设事件的“开始日期”为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)同时不查询过去的每个其他事件吗?
希望有办法做到这一点!非常感谢您的任何投入。
最佳答案
要查找重叠的事件,请在查询中将OR
更改为AND
(将日期略微更改为仅与三月重叠):
WHERE (end >= '2012-03-01' AND start < '2012-04-01')
关于php - FullCalendar和MySQL —优化我的查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9816942/