2011-12-11 50 views
0

我有一個MySQL SELECT查詢是快速(< 0.1秒),但只有我第一次運行它。它將3個表連接在一起(使用索引)並具有相對簡單的WHERE語句。當我在phpmyadmin中手動運行它時(總是改變WHERE中的數字以便它不被緩存),它總是很快,但是當我讓php連續運行它的幾個副本時,第一個是快速的,其他掛上〜400秒。我唯一的猜測是,不知何故,mysql連接內存不足,然後必須進行昂貴的分頁。Mysql查詢快速只有第一次運行

我一般的問題是,我該如何解決這個問題,但我的具體問題是沒有實際關閉和重新啓動我如何才能讓這些查詢從PHP來被視爲單獨的連接,就像查詢從phpMyAdmin的到來,如何能我告訴mysql在請求完成時刷新所有內存,這聽起來像是內存問題嗎?

+0

你必須做錯事,沒有你的實際SQL很難說。 – ajreal

回答

0

那麼我發現答案至少在我的情況下,我把它放在這裏爲任何人在未來遇到類似問題。我運行的查詢返回了很多結果,導致很多開銷。當你運行一個查詢時,MYSQL會將它和它的輸出保存起來,以便它能夠快速地回答未來相同的請求。我所要做的只是放入SQL_NO_CACHE,速度恢復正常。只要看看你的傳入查詢是否很大或者結果是非常大的,因爲它可能需要相當多的資源才能決定何時解決問題。