2013-06-02 29 views

回答

2

數據過濾和搜索絕對是mysql服務器的一項工作。客戶端數據過濾是不是一個好辦法:

當您使用LIKE條款MySQL服務器將篩選數據之前檢索到客戶端(PHP)。因此,當您不使用LIKE時,傳輸的數據量會大得多,首次性能問題是什麼。

第二個問題是PHP將使用大量內存(整個數據集)。

第三個問題是,你將在PHP需要在所有記錄


那麼,你有沒有這樣做有三個很好的理由循環。請注意,除LIKE子句外,還有很多string functions in mysql。他們應該適合。

+0

@ luk2302 LOL! :D請注意,軟件組件可以同時作爲服務器和客戶端。 PHP通常作爲HTTP服務器的一部分,這是正確的。但是當PHP連接到mysql時,那麼mysql服務器就是服務器,Web服務器在客戶端扮演着重要角色 – hek2mgl

+0

當然,傳輸更多數據需要更多時間。數據中心(在MySQL和Web服務器之間)的網絡吞吐量可能高於DSL用戶(瀏覽器)和Web服務器之間的吞吐量,但請注意,數據中心中的併發流量也很多。 – hek2mgl

2

是的,如果您總是檢索所有數據,然後對它們進行排序而不是讓數據庫處理它,它將對性能產生巨大影響。

1

這是一個非常糟糕的主意。你們有些人應該離開過濾的DBMS系統的理由是:

  1. DBMS系統對這些操作
  2. 這種類型的操作會造成很大的開銷在你的網絡服務器進行了優化。想象一下,必須在PHP中使用數千或數百萬個字符串進行字符串操作。這由DBMS在任何時候完成。
  3. 攜帶大量的數據從數據庫到Web服務器,並可能給瀏覽器,將會使你的應用程序要慢得多
  4. 做用自己的PHP代碼過濾在推行錯誤和邏輯錯誤的可能性要高得多。

因此,離開DBMS做它的工作!

+1

很好的答案! ... – hek2mgl