作者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://webptt.com/cn.aspx?n=bbs/Database/M.1439825179.A.40E.html
1F:→ brianw: 谢谢 满有道理的 08/18 03:09
2F:推 Ammenze: 我会以该资料是否每个人只有一笔资料来设计,举例来说 08/19 10:05
3F:→ Ammenze: 如果你身高体重是要依照年龄纪录的,那就会另外拆一个 08/19 10:05
4F:→ Ammenze: Table把每次量的记下来,再用id比对,如果每次量的身高体重 08/19 10:06
5F:→ Ammenze: 会直接盖过现有纪录栏位,那就跟id在同一个Table 08/19 10:06