看板 Database 關於我們 聯絡資訊
※ 引述《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