2012-03-22 29 views
0

我對SO here以前的問題有跟進問題。我想知道如何進一步優化/優化我的問題。FullCalendar和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; 

這個查詢的偉大工程,從一月說。所以查詢是快速和有效的。 但是,對於下個月可能重疊的查詢無效。 (假設一個事件有一個2012-03-29的「start_date」,但是2012-04-05的「end_date」,那麼它就不會被拖入查詢中,因此不會顯示。

因此,我查詢結束了:

-- 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日拉的所有事件,從而使其非常緩慢,inefficent

。我如何優化此查詢以實現以下兩項功能:

a)使其工作,以便收集跨越一個月末到另一個月的事件?
b)同時不詢問過去的每一個其他事件?

希望有一種方法可以做到這一點!非常感謝您的任何意見。

+0

烏爾問題,我鼻涕清楚你請可以簡化呢? – 2012-03-22 05:39:39

+0

你好OM永恆,我試圖簡化我的要求。 – Dodinas 2012-03-22 06:02:39

回答

1

要查找重疊的事件,改變ORAND在查詢(變更日期稍微得到重疊與三月只):

WHERE (end >= '2012-03-01' AND start < '2012-04-01') 
+0

這絕對是似乎工作。非常感謝您的幫助。 – Dodinas 2012-03-22 07:01:38

0

你有沒有試過在你的where語句中添加額外的東西?

喜歡的東西

SELECT start, end, title, details, location 
FROM event 
WHERE (end > $start OR start < $end) 
AND user_id= $user_id AND $end >CURDATE(); 

這似乎是它只會拉尚未結束事件。

+0

嗨安德魯,謝謝你的迴應。我嘗試了這一點,但是這會拉動每一個未來的事件。所以如果有人在2015年前一直有1,000個活動,他們都會在回覆中出現。 – Dodinas 2012-03-22 06:04:41

+0

它不應該超過原始查詢的範圍。聲明通常限制數據不會增加更多。你原來的查詢拉什麼? – FajitaNachos 2012-03-22 06:41:00