带有85列的MySQL表 - 多个表连接更好吗?

时间:2016-06-06 21:50:14

标签: mysql database

我正在努力完成即将上线的网站。它每周最多可处理100万个文件,并将这些文件中的所有信息存储在数据库的多个表中。

主表每个文件将有10条记录,因此每周将获得大约1000万条记录。目前该表有85列,每行存储大约1.6KiB的数据。

我显然担心有85列,看起来很疯狂,但如果我将数据拆分成多个表格,我更担心连接...如果我最终得到4个20个奇数的表格列中以及每个列中有超过500,000,000条记录,这些连接是否会花费大量时间?

连接将全部发生在1列(traceid)上,该列将出现在所有表中并编入索引。

这将运行的硬件是i7 6700,32GB RAM。表类型是innodb。

非常感谢任何建议!

谢谢!

1 个答案:

答案 0 :(得分:0)

答案取决于数据的结构。 85列是很多。添加第86列会很不方便。您的查询将是详细的。 SELECT *,当您使用它进行故障排除时,会在屏幕上显示很多内容,而您在解释它时会遇到问题。 (不要问我怎么知道这个。: - )

如果您处理的每个数据项都只包含所有85个值的一个实例,并且它们都是所有独立值,那么您已经适当地设计了表格。

如果大多数行都有85个值的子集,那么你应该找出子集并为每个行创建一个表。

例如,如果您要描述公寓,并且您的列具有以下含义:

 livingroom           yes/no
 livingroom_sq_m      decimal (7,1)
 diningroom           yes/no
 diningroom_sq_m      decimal (7,1)

您可能需要一张公寓桌和一个单独的房间桌子,上面有这样的栏目。

 room_id     pk
 apt_id      fk
 room_name   text
 room_sq_m   decimal (7,1)

在另一个示例中,如果您的某些列是

 cost_this_week
 cost_week_1
 cost_week_2
 cost_week_3
 etc.

您应该考虑将这些信息标准化为单独的表格。