2013-09-26 41 views
1

我有一個帶Apache,PHP和MySQL的EasyPHP本地web服務器。到現在爲止,我一直在處理一個只有500條記錄的數據庫。有時,在查詢數據庫時,在返回數據之前會有很大的延遲,也許大約10秒鐘,但這並不一致。也許每10個用戶都會搜索它會發生。今天,我將一堆測試數據加載到6個表格中。每張桌子現在有大約15,000條記錄。現在,在搜索用戶時,數據每次返回併發生大約需要25秒。SQL查詢在EasyPHP win7服務器上的Kohana web應用程序中速度極慢

下面是SELECT查詢:

SELECT SQL_CALC_FOUND_ROWS criteria.id, criteria.uid 
FROM user_profile 
INNER JOIN criteria ON (criteria.id = user_profile.cid) 
WHERE ((criteria.city = 250) 
    AND (user_profile.dob BETWEEN STR_TO_DATE('1978-09-27', '%Y-%m-%d') 
    AND STR_TO_DATE('1993-09-27', '%Y-%m-%d')) 
    AND (criteria.gender = 2) 
    AND (EXISTS(SELECT id FROM criteria_interests 
       WHERE cid = user_profile.cid AND value = 1) 
     OR EXISTS(SELECT id FROM criteria_interests 
       WHERE cid = user_profile.cid AND value = 2))) 
    AND (user_profile.uid != 2) 
LIMIT 0, 18 

該查詢需要大約25秒返回202個結果。如果我在phpMyAdmin中運行該查詢,它會立即加載。

我不確定滯留在哪裏。我知道SQL_CALC_FOUND_ROWS可能會造成速度減慢,但不會返回202行25秒。這裏不對勁。

我想知道如何找出問題所在。我首先提到的間歇性延遲基本上是因爲我安裝了EasyPHP,所以我認爲這是EasyPHP的一個問題。但現在看到更多數據庫記錄帶來的問題變得更糟,我認爲這是一個MySQL問題。但是,當我在phpMyAdmin中運行查詢時,速度非常快。所以現在我認爲這是一個PHP問題。

我的PHP內存限制設置爲128M,這可能不是很多,但不會造成25秒的延遲。

有誰知道我可能會如何解決這個問題?在配置Apache,PHP或MySQL方面,我並不是最知名的,所以我不知道如何去解決這個問題。

感謝您的任何建議。

+3

你有沒有試過[Kohana profiler](http://kohanaframework.org/3.3/guide/kohana/profiling)。這至少可以確定你是否在正確的地方尋找。還要確保你已經在MySql中正確指定了你的索引,並且考慮啓用[Mysql slow query log](http://dev.mysql.com/doc/refman/5.1/en/slow-query-log.html)。 –

+0

我不知道有關探查器!這導致我直接找到問題查詢,這實際上是COUNT()在搜索結果選擇後選擇的。謝謝你。這基本上回答了我的問題,所以如果你把答案放在答案中,我會將其標記爲已接受。 – Gavin

回答

1

我有一個從數據庫加載類似的問題。它在我的EasyPHP本地環境中運行速度非常慢。但是,當我將它上傳到遠程託管服務器時,問題已經消失。所以如果你的EasyPHP緩慢地運行你的應用程序,不要太擔心,它會在真實的服務器上運行。

如果你真的不能處理這種滯後,那麼在開發本地使用XAMPP環境的時候應該如此。 下載鏈接: http://www.apachefriends.org/en/xampp.html

0

我想我找到了解決您的問題的方法。這可能無法解決特定的問題,但它可能會解決它。 你的問題讓我覺得我能做些什麼來解決這個問題...這可能聽起來相當不舒服,但我只是通過安裝WAMP的服務器固定它:

http://www.wampserver.com/en/

現在你可能會說.. 。「嘿,你說你已經修好了它不會改變開發服務器」

是的!一旦我已經安裝WAMP的服務器後,我已應用到它上面的MySQL配置YouTube上的視頻顯示:

http://www.youtube.com/watch?v=8ob7Rvzobec&noredirect=1

的EasyPHP得到了巨大的提升速度!現在它像魅力一樣工作。來自數據庫的查詢非常快。從這裏我想提醒你我面臨與你的問題完全相同的問題。現在問題解決了,我的EasyPHP可以再次發光。

也許這也會解決你的問題。祝你好運! :)