iT邦幫忙

2

SQL 與 PHP 判斷if else 效率

  • 分享至 

  • xImage

想請問各位大大,假設搜尋得資料有1萬筆或是以上,必須要判斷某欄位中得值,此時在SQL 中下IF ELSE還是在PHP中執行完在判斷,(如某欄位為SEX,1=>女,2=>男,3=>不明);
SQL:

SELECT CASE SEX
WHEN '1' THEN '女'
WHEN '2' THEN '男'  
ELSE '不明' END 
FROM TEST1 

PHP:

$SQL='SELECT SEX FROM TEST1 ';
執行語法省略....
if($SEX=='1'){
echo '女';
}else if(){
echo '男';
}else{
echo '不明';
}

何種效率較好?想請教各位得意見。或是有其他想法得歡迎提供參考謝~謝~

fillano iT邦超人 1 級 ‧ 2021-12-02 14:15:59 檢舉
建議寫測試程式來實測比較。
qpalzm iT邦研究生 5 級 ‧ 2021-12-02 14:22:46 檢舉
目前測試得1000筆 不知道數量是不是篇少 分不出來 XD
firecold iT邦新手 1 級 ‧ 2021-12-03 19:04:10 檢舉
其實我個人是習慣是非必要的話
只要讓sql做最基礎的運算就好
複雜的交給程式做畢竟開elb比較簡單
資料庫同步的成本比較高,一個人用沒感覺
人多就會反應負荷了
當然這個還是要看情境
再來是現在前後端分離越來越多
依照這個例子直接輸出給前端定義文字就好了
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
9
japhenchen
iT邦超人 1 級 ‧ 2021-12-02 14:21:08
最佳解答

SQL有辦法做到並行處理,才輸出結果
PHP............你還得把資料全部不分條件查詢出來,再一筆一筆檢查.....

兩者間沒法相比

看更多先前的回應...收起先前的回應...
qpalzm iT邦研究生 5 級 ‧ 2021-12-02 14:28:30 檢舉

如果這樣說 我可以解釋說SQL能處理到併行處理 PHP要先"全部"查出來 載判斷 ;這樣處理得次數來說PHP相對不好。 請問j大我能這樣理解嗎

如果以少量的主機資源而言,這很重要,至少你的PHP上不需要先拿一大堆資料再來foreach ... if ...

qpalzm iT邦研究生 5 級 ‧ 2021-12-02 14:32:43 檢舉

了解了 ,謝謝J大解惑~

簡單一個情境解釋~~
你去銀行,把100萬元全部提領出來,然後再一張一張鈔票的發行時間以【三年以內的放一堆,超過三年的放一堆】

或是在提款的時候,就請銀行全部給你新鈔

速度差在哪?

qpalzm iT邦研究生 5 級 ‧ 2021-12-06 08:20:25 檢舉

能夠先處理的就先請銀行處理,我們只需要收到銀行的回饋就好~謝謝j大生動的解釋!!!!
但.....【我沒100萬】/images/emoticon/emoticon70.gif

4
ckp6250
iT邦好手 1 級 ‧ 2021-12-02 14:50:01

我一向的宗旨是,凡是 sql 能做的,就不要叫 php 去做。
所以,我的stored procedure 又大又肥,但 php 則又小又瘦。

qpalzm iT邦研究生 5 級 ‧ 2021-12-02 14:58:11 檢舉

這也是我目前的做法~/images/emoticon/emoticon41.gif

1
miku3920
iT邦新手 2 級 ‧ 2021-12-10 10:58:11

這種轉換的問題,能不用 if-else 就不要用

通常都是用個陣列儲存要轉換的東西,然後直接用鍵取值

$genders = ['1'=>'女','2'=>'男','3'=>'不明'];
$result = 1; // 查詢的結果
echo $genders[$result];

這種方法在增加選項是會非常方便,只要在陣列後面新增一個鍵值對就行了,完全不用動到其他程式

不過這樣會不會比 SQL 快,這個我就不知道了

我要發表回答

立即登入回答