2013-01-14 95 views
0

爲了減少下載數據的大小,我想用代碼替換一些重複的數據部分,然後在客戶端重新進行轉換。應該在mysql或php中替換嗎?

應該在MySQL查詢中完成替換還是在PHP之後完成,還是重要?

MySQL內:

SELECT IF(SUM(val)=16,0,CONCAT("[",GROUP_CONCAT(TRIM(TRAILING ".000" FROM val) ORDER BY itm),"]")) 

PHP:

$q=str_replace("1.000","1",$q); 
$q=str_replace("[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]","0",$q); 
+0

你是什麼意思下載的數據?我鼓勵你跳過這些手動cpu操作,而是在你的apache服務器上啓用GZIP。 – Sebas

+0

GZIP已啓用 – Mahks

+0

然後確定您已對您的更改進行基準測試,因爲最有可能它不會執行任何操作,但會增加寶貴的CPU開銷 – Sebas

回答

2

無論你選擇做它,不要做它內聯。將它包含在一個函數中,以便您可以重新使用和操作邏輯而不會中斷實際查詢,反之亦然。

我將使用我的投票PHP代碼,因爲當你切換到明天的東西時,你將不需要找出在完全不同的SQL語法上實現相同的邏輯。我認爲PHP的實現也更容易閱讀。

+0

將代碼置於mysql函數(例程)中減慢查詢速度。這是由於這些例程位於單獨的數據庫中(需要爲多個數據庫提供服務),不知道爲什麼這會降低它們的速度。 – Mahks

2

MySQL的會比PHP更快,將讓你的代碼有點清潔。