2012-11-08 52 views
2

我有一個網頁,每30秒自動更新一次用戶及其評論列表。每40秒輪詢一次,這個MySQL查詢效率低下嗎?

一次可能有多達300-400個用戶在該網站上的用戶。

所以每隔30秒,一個PHP腳本通過AJA稱爲它運行這一點:

SELECT `user` .*, by_user.name as updated_by 
       "FROM `user` 
       "LEFT JOIN `user` by_user ON (`user`.last_updated_by = by_user.user_id) 
       WHERE `user`.active= 1 AND `user`.group_id =.$group_id. 
       AND `user`.last_updated > (NOW() - INTERVAL 30 SECOND) 

難道是最好不要使用日期計算(現在間隔),而不是記錄最後的日期時間民意調查,然後檢查呢?

回答

4

NOW() - INTERVAL 30 SECOND僅針對查詢完成一次,並且速度非常快。做任何事情的開銷幾乎肯定會對性能產生更糟的影響。

如果您有複合索引(active,group_id,last_updated),它會使性能最優。

由於您在選擇中做了一個*。*,我不會嘗試爲查詢創建覆蓋索引。

0

這兩種方法都應該給出相同的結果 - 計算速度非常快,只有在執行查詢時纔會發生。您的查詢速度將取決於您索引的字段等等。