作者JingJing00 (晶晶)
看板Database
標題Re: [SQL ] 一個用戶多筆資料存一張表還是多張表較好
時間Mon Aug 17 23:26:16 2015
※ 引述《brianw ()》之銘言:
: 假設現在一個用戶有多筆資料:
: [id, 身高, 體重, 年紀]
: 但不是每欄都是必填
: 請問怎麼樣存取較好呢?
: 1.) 同一張表 沒填的就空白 舉例:
: id 身高 體重 年紀
: ----------------------
: 1 170 20
: 2 40
: 3 190 100
: 2.) 每種資料各存一張表 舉例:
: id 身高 id uid 體重 id uid 年紀
: --------- -------------- --------------
: 1 170 1 3 100 1 1 20
: 3 190 2 2 40
: 新手的理解
: 是不是第一種存取只要request一次? 但會有很多欄位是空白
: 第二種則要request三次 但不會有欄位是空白
: 請問資料多時哪種方式會比較好呢? 謝謝
看查詢使用量,比較清楚要用那種比較好,現在的資料庫都有查詢的使用量歷史資料。
通常會考慮兩種情況: 一、查詢(Select) 二、新增(Insert)
~查詢~
2查詢合併表格時比較慢,1因為不用合併表格,所以比較快
如果比較常個別查詢身高、或體重、或年紀,2比較好
因為既然不需要常常合併表格,那也不用先合併好
舉個例子:
超過50%的查詢,要一起看使用者的身高、體重年紀 - 選1
超過50%的查詢,只看身高,或只看體重,或只看年紀 - 選2
~新增~
雖然新增資料1比較快,不過怎麼看都不是像交易資料那樣高頻率新增,
所以不太需要考慮這點
一點想法,希望有合理
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.27.43.9
※ 文章網址: https://www.ptt.cc/bbs/Database/M.1439825179.A.40E.html
→ brianw: 謝謝 滿有道理的 08/18 03:09
推 Ammenze: 我會以該資料是否每個人只有一筆資料來設計,舉例來說 08/19 10:05
→ Ammenze: 如果你身高體重是要依照年齡紀錄的,那就會另外拆一個 08/19 10:05
→ Ammenze: Table把每次量的記下來,再用id比對,如果每次量的身高體重 08/19 10:06
→ Ammenze: 會直接蓋過現有紀錄欄位,那就跟id在同一個Table 08/19 10:06