2010-08-17 39 views
2

所以我有一個網站,我正在努力,隨着時間的推移已被許多開發人員感動,隨着新功能的出現,開發人員當時覺得有必要添加另一個查詢來獲取需要的數據。這給我留下了一個緩慢的PHP頁面,並可能運行70個查詢。其中一些查詢在本頁的實際PHP文件中,有些分散在許多不同的功能中。現在我有責任嘗試加快頁面以符合特定要求。我正在尋求最佳的行動方針。優化有很多查詢的PHP頁面

  1. 有沒有辦法打印所有正在運行的查詢,然後遍歷文件並查找每個查詢?
  2. 我應該緩存使用memcached緩慢的查詢嗎?
  3. 有沒有人有想過幫我加快頁面的想法?
  4. 是否有插件或工具來分析查詢,我使用YSlow,沒有什麼可以查看查詢?

回答

3

我所做的一件事就是擁有一個my_mysql_query(...)函數,該函數的行爲與mysql_query(...)相似,但我可以根據該查詢文本定製註銷執行時間。 MySQL可以用很少的手段記錄緩慢的查詢 - 參見here

+1

你打敗了我。 :)作爲一個快速入門,我會建議OP創建一個這樣的函數,然後用新函數替換所有出現的「mysql_query」。 – casablanca 2010-08-17 19:25:23

+0

我不知道你是什麼意思...所以我創建一個打印出查詢而不是執行的函數...你有一個例子 – Trace 2010-08-17 19:29:31

+1

@John:我認爲他有一個函數,它既執行又執行* X * (不管你喜歡什麼,登錄/定時等)。 – chelmertz 2010-08-17 19:33:08

1
  1. 如果沒有中央查詢方法被調用來運行每個查詢,那麼唯一的選擇是查找每個查詢並找到它在代碼中的位置。否則,您可以轉到該查詢函數並打印通過它運行的每個查詢。

  2. 使用緩存將取決於數據更改的頻率。如果它頻繁變化,它可能不會給你任何性能提升來緩存它。

  3. 一個想法,以幫助您加快頁面是做到以下幾點:

    • 組之類的查詢到相同的查詢,並在多個部分
    • 考慮將此頁面分成多個位置使用數據
  4. 取決於您使用的數據庫。有些數據庫中有分析功能,可以幫助您優化查詢。例如,你可以在mysql中使用EXPLAIN。 (http://dev.mysql.com/doc/refman/5.0/en/explain.html)您可能需要考慮就此問題諮詢DBA。

祝你好運。