作者alpe (薛丁格的貓)
看板PHP
標題Re: [請益] 用PHP做運算 還是用MYSQL做運算 ?
時間Sat Nov 3 10:33:32 2012
※ 引述《jl844032 (湖藍者)》之銘言:
: 標題: [請益] 用PHP做運算 還是用MYSQL做運算 ?
: 時間: Thu Nov 1 22:55:11 2012
: 一個PHP想要從MYSQL拉資料後 再用PHP做運算比較好
: 還是在MYSQL做完運算後 傳回來PHP比較好
: 關於效能方面 哪個方式會比較好?
看你資料筆數. 少的話真的隨便.
PHP是到記憶體裡面處理.
Mysql 就要看也有可能是再 file.
相對來說 php 那邊會吃到比較多的記憶體, 那就會讓你的最大處理量變低
另外, DB很少... 我看到很多case都不會利用到DB處理邏輯.. 所以大部分都在
CPU loading 10~20% ... 很浪費.
雖然說多多利用DB會變的, 沒辦法輕易換DB... 但有多少人的案子需要沒事換DB?
我會再mysql處理字串連接.
比如說 SELECT conact('<a href="?i=', id, '>', id, '</a>');
這種東西對 DB 還說吃不到多少工, 但你在php寫...
// ----------- 自己寫
$data = array() ;
while($row = $db->xxx_fetch_row()){
$data[] = '...' . $row['id'] . '...';
}
// 用framework
// -----------framework
//framework 幫你作
$data = array() ;
while($row = $db->xxx_fetch_row()) $data[] = $row;
// 自己要寫
foreach($db->fetchRow as $name => &$row ){
$row[id] = '...' . $row['id'] . '...';
}
當然在給DB的code有 html 很髒... 不過我會作這種事大部份都在後台
配合如 jqGrid 這樣的東西.
所以我在處理php的時候,很簡單程式都用一樣的.
: --
: ※ 發信站: 批踢踢實業坊(ptt.cc)
: ◆ From: 36.234.14.141
: 推 carlcarl:一般是MySQL這邊處理掉 11/02 00:09
: → MOONRAKER:如果是用來決定資料要不要取出的條件 就在MySQL做 11/02 00:35
: → MOONRAKER:如果不是,比如說,只是格式,那隨便在那邊都可以 11/02 00:36
: 推 XD9527:理論來說,能用計算條件從sql取得的話,會比php好 11/02 15:47
: 推 cjoe:運算嗎? 不用想了,用MySQL效率好上超級多 11/02 17:46
: → MOONRAKER:樓上要不要展現一下用MySQL寫loop或遞迴的效率 |D 11/02 18:48
寫loop做啥. select 就會跑了啊.
: 推 chenlarry:同moon大,如果拉資料出來結果要多寫10行php code,何不 11/02 23:45
: → chenlarry:上面少打幾個字..多寫10行php code來過濾不要顯示的資料 11/02 23:47
: → chenlarry:何不使用一行SQL query來省掉那10行多餘的php code? 11/02 23:47
: 推 carlcarl:不太是程式多少行的問題 你分一台app 一台mysql 11/03 00:42
: → carlcarl:你把所有資料都傳到app這邊來做 頻寬根本不夠你這樣傳.. 11/03 00:43
??
web 跟 db 中間的線路除非你們跨很遠, 在同一個機房, 應該都走內網.
通常都不會有這種顧慮... 除你主機還是用很舊的10/100的網卡
之前我用過得機房 或是我最近用的 linode 都不會在意這種問題.
雖然說把資料傳道 web 作有點差, 不過我真得看過... 還是在前公司
幾萬筆資料傳到web去作過濾... 重新排序.
那家公司請 google aff.. 第一筆就是.
--
phpconf 大家對工作比較有興趣 XDDDDDD
--
Live Long and Prosper
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.109.127.16
→ MOONRAKER:對mysql的loop沒概念,我就不戳你了。 11/03 13:31
→ MOONRAKER:HTML都在SQL裡面SELECT出來,跟MVC簡直背道而馳,科科 11/03 13:31
→ alpe:我都說了很髒... 11/03 14:38
→ alpe:我對db的loop的卻沒概念請賜教,我只會一點stored func. 11/03 14:41
→ alpe:如果我在select 寫func裡面內沒loop, 這會要跑loop嗎? 11/03 14:45
推 carlcarl:我指的是過濾資料的部份 其他資料處理我就沒意見了~~ 11/04 00:32