首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mysql表设计建议

Mysql表设计建议
EN

Stack Overflow用户
提问于 2014-11-28 09:53:29
回答 1查看 53关注 0票数 0

我有一个关于MySQL数据库表设计的一般性问题。我有一张桌子,里面有大约65万份记录,每年增加大约10万份。请求数据的频率相当高,平均每秒1.6次。

它现在有下面的结构

代码语言:javascript
复制
id   port_id         date        product1_price    product2_price    product3_price
 1         1   2012-01-01                100.00            200.00            155.00
 2         2   2012-01-01                  NULL            150.00            255.00
 3         3   2012-01-01                300.00              NULL            355.00
 4         1   2012-01-02                200.00            250.00            355.00
 5         2   2012-01-02                400.00            230.00            255.00

用这种方式存储数据不是更好吗?

代码语言:javascript
复制
id     port_id         date    product   price
1            1   2012-01-01          1     100
1            2   2012-01-01          1     200
1            3   2012-01-01          1     300
1            1   2012-01-02          1     240

替代设计的优点:

  • 对于第二个设计,我们不需要存储空值(如果端口中没有这样的产品)
  • 我们可以轻松地添加新产品--与第一种设计相比,每种新产品都需要一个新列。

备选设计的缺点:

  • 记录的数量将从65万条增加到65万条* number_of_products减去所有空记录;这大约是210万条记录。

在这两种情况下,我们都有id列作为PRIMARY_KEY,以及port_iddate组合的唯一键。

所以问题是:走哪条路?磁盘空间无关紧要,查询速度是最重要的方面。

感谢您的关注。

EN

回答 1

Stack Overflow用户

发布于 2014-11-29 12:30:43

它会接缝,这将取决于product表的定义。

如果产品表是静态复合最多三个部分,那么改变当前的设计不会有多大帮助。

虽然目前的设计难闻,但那将是一个业务依赖的分析。

顺便说一句,对于产品表及其用法的副作用,必须谨慎地进行更改。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27185988

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档