php - FullCalendar 和 MySQL -- 优化我的查询

标签 php mysql

我有一个关于我之前在 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;

此查询效果很好,因为它不会获取旧事件,例如从一月份开始的事件。因此查询速度快、效率高。 但是它不适用于可能重叠到下个月的查询。 (假设某个事件的“start_date”为 2012-03-29,但“end_date”为 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/

相关文章:

c# - SQL 垂直显示表

mysql - 如何获得mysql中多个字段的不同结果?

php - PHP 连接到 MySQL 表的问题

php - Codeigniter 分页使用页码重复内容

php - 在数组中逐渐存储增量数? - 计算平均流水率

php - 如何在php中查看mysql查询结果

php - 加入同一个表?

java - 数据库查询总是返回true?

c# - 确定哪个数据库行导致 "Input string was not in correct format"

php - 如何根据胜利/损失列在 PHP 中获取 Mysql 查询的百分比