作者kingoface (Vince)
看板PHP
標題[請益] 這兩種做法哪種比較快?
時間Mon May 21 16:08:33 2012
問題如下
現在要做個簡易的排班表
1.每一個人的每一天的班別寫入為一筆資料
人 班 日期
A君 123班 5/1
B君 456班 5/1
A君 456班 5/2
A君 123班 5/3
這種做法,資料庫可能有6萬筆資料
2.把班別欄位用","分開(用explode判斷 日期)
人 班
A君 123班,456班,123班
B君 456班
這樣資料數量可能減少為2千筆資料
那這兩種做法,在使用者操作的情況下,速度會比較快呢?
感覺會有點像是 資料庫搜尋 或是 php程式判斷的差別.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.31.200.209
1F:→ chrisQQ:看你搜尋的條件,如果只搜尋人,那當然第二種比較快, 05/21 16:24
2F:→ chrisQQ:但一般來說都會用 1 來設計。 05/21 16:24
3F:→ tyf99:排班會常修改嗎? 第二種不利修改 05/21 16:46
4F:→ kingoface:班表算是滿長修改的,但是搜尋方面也可以說非常多,所以 05/21 17:32
5F:→ kingoface:想說問問看有沒有比較好的做法.我目前是用2. 05/21 17:33
6F:→ chrisQQ:搜尋可以用很多方法優化~ 05/21 18:33
7F:→ dio833:你的班別合併了,那日期欄位也合併了嗎?然後依照順序判斷代 05/21 23:20
8F:→ dio833:表的日期嗎?這樣做好像很驚險 05/21 23:21
9F:→ dio833:今天要查詢5/4號456班排的人,可能就搞死自己了 05/21 23:24
10F:→ dio833:我比較推薦用第一種做法,因為省資料量換來的代價太高了 05/21 23:26
11F:推 liaosankai:現在儲存介媒技術大躍進,用空間換時間是比較好的 05/22 02:04
12F:→ MOONRAKER:2看起來比較像寫log(不常看也幾乎不搜尋)的方法。 05/22 12:06
13F:推 carlcarl:1 +1 05/23 00:18
14F:→ shadowjohn:後者這種最多也只拿來分格數字型索引,不會是文字 05/24 08:31
15F:→ shadowjohn:通常會用第一種做法^^ 05/24 08:32