我有一個帶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方面,我並不是最知名的,所以我不知道如何去解決這個問題。
感謝您的任何建議。
你有沒有試過[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)。 –
我不知道有關探查器!這導致我直接找到問題查詢,這實際上是COUNT()在搜索結果選擇後選擇的。謝謝你。這基本上回答了我的問題,所以如果你把答案放在答案中,我會將其標記爲已接受。 – Gavin