2014-11-22 45 views
0

我寫了這個查詢,它工作絕對完美,但自從數據庫開始增長以來,這個查詢變得越來越慢,直到現在它幾乎需要54秒才能執行。有沒有什麼辦法可以改善這個查詢來使它更快,因爲我不想讓這個54再變長。如何改善一個大型MySQL數據庫的「WHERE NOT EXIST」查詢

SELECT 
     twitter.user_id AS id 
     FROM twitter 
     WHERE NOT EXISTS 
       (
       SELECT stats.id 
       FROM stats 
       WHERE stats.user_id = twitter.user_id AND stats.created_on >= now() - INTERVAL 1 DAY 
       ) 
     GROUP BY twitter.id 
     LIMIT 0 , 300 
+0

你有'stats.user_id,twitter.user_id,stats.created_on'上的索引嗎? – 2014-11-22 10:47:24

+0

我剛剛在它們上面添加了索引,這會解決嗎? – Max 2014-11-22 10:50:47

+0

是的!謝謝阿比克!如果你想回答這個問題,我會投票解決 – Max 2014-11-22 10:51:37

回答

0

我猜你的字段缺失索引,所以我會建議對連接列和日期字段

,所以你可能需要在

stats.user_id 
twitter.user_id 
stats.created_on 

您可以添加索引添加索引使用explain來查看查詢是如何執行的,它會告訴你在查詢中使用了哪些所有索引。