Mysql表设计建议
我有一个关于MySQL数据库表设计的一般性问题。我有一个表,其中包含约65万条记录,每年添加约10万条记录。数据请求非常频繁,平均每秒1.6次 它现在的结构如下Mysql表设计建议,mysql,database-design,database-performance,Mysql,Database Design,Database Performance,我有一个关于MySQL数据库表设计的一般性问题。我有一个表,其中包含约65万条记录,每年添加约10万条记录。数据请求非常频繁,平均每秒1.6次 它现在的结构如下 id port_id date product1_price product2_price product3_price 1 1 2012-01-01 100.00 200.00 155.00
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
这样存储数据不是更好吗
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万*产品数量减去所有空记录;这将是大约210万条记录
id
列作为主关键字,并在端口id
和日期的组合上使用唯一关键字
所以问题是:走哪条路?磁盘空间无关紧要,查询速度是最重要的方面
感谢您的关注。这取决于产品的定义。
如果产品表是由最多三部分组成的静态组合,那么更改当前的设计将不会有多大帮助。
虽然当前的设计很难闻,但这将是一个依赖于业务的分析。
顺便说一句,必须小心更改产品表及其用法的副作用