关于我以前在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/

10-11 05:13