2014-03-19 33 views
0

我們正在yii中開發一個複雜UI的應用程序。我不是程序員,但注意到應用程序頁面加載時間似乎很慢。yii多個數據庫查詢或數組

我打開MySQL查詢日誌記錄,發現有很多重複查詢的例子,如「select x,y,z from table where id = 1」,「select x,y,z from table where id = 2」,「select x,y,z from table where id = 3」。用單個「select x,y,z from table where id in (1,2,3)」代替它們幾乎與運行單個查詢中的一個相同。總的來說,這樣做會減少加載時間的數量級。在我看來,就像查詢發生在一個循環內,而不是首先構造的where子句,所有數據都被檢索到一個數組,然後循環遍歷數組。

當我向編程團隊指出這一點時,我被告知在PHP中循環訪問數組的速度與執行單獨的SQL調用一樣慢。鑑於我在其他編程語言方面的經驗,我覺得這很難相信,看起來DAO會很輕鬆地做到這一點。另一個問題似乎是複雜的模型。任何意見讚賞。

回答

0

這取決於。如果你的數組不會被序列化爲將來調用的會話存儲,我認爲在內存中查詢數組要比對數據庫進行多次調用要快。但我也認爲這是不實際的,除非你真的要使用所有的數據,我的意思是,獲取大量的行,你不會顯示全部給用戶。我也認爲這不是因爲你浪費你的db的力量,請參閱Massive PHP array vs MySQL Database?。我不知道如果我在這裏正確的上下文,但我的建議是以某種方式嘗試正確地建立你的查詢,所以你只需要查詢你的數據庫一次,如果它是太多的信息使用分頁和工作只有固定數量的行在每個時間。希望它有幫助...

+0

它在我看來像大多數情況下10 - 20單個電話正在對數據庫進行,當1更難編碼一個就足夠了,並具有相同的持續時間作爲任何一個單一的電話。所以問題是編碼是否值得付出努力。我們正在談論html頁面需要的10-20行,而不是一堆不會立即使用的數據。每個頁面需要多次這樣的調用(總計可能是100次)。 – user3438020