MySQL表中有多少列

时间:2010-10-12 10:58:52

标签: mysql database-design

MySQL表中可以有多少个字段?

我有一个从用户那里获取信息的表格,它分为6个或7个单位,但都相互关联。他们大约有100个领域。

您是否建议将所有这些内容保存在一个表格中?


感谢大家的回复,我的表的数据是关于用户的一些个人信息,所有需要完成的工作是从用户那里获取,保存并显示它们并拥有编辑选项。 我应该使用规范化吗?在我的情况下,它不会增加处理时间吗?

8 个答案:

答案 0 :(得分:9)

如果你正在关注database normalization,你通常应该 ok - 尽管你可能会发现一些性能问题。

对我而言,似乎可能会有一些规范化?

此外,您应该考虑这些列中有多少只具有空值,以及您使用的命名约定(不仅仅是名称,名称2等)

如果你想更多地阅读它:。

Data normalization basics

MySql :: An introduction to database normalization

答案 1 :(得分:4)

MySQL每个表最多支持 4096 列。如果通常需要值,请不要在主表中使用字段。

  1. 如果列取NULL没问题但是如果存储为“”其内存浪费。

  2. 通常空值表示可选字段数据,那么为什么要将其存储在主表中。

  3. 这就是我在声明中的意思。

答案 2 :(得分:1)

这没有一般规则。但是,100列绝对暗示您的数据库设计是完全错误的。您应该在继续之前阅读有关规范化和数据库设计的内容我有一个数据库设计,有大约150个列,分成近40个表,只是为了给你一个想法。

答案 3 :(得分:1)

对于不需要索引或搜索的数据,我在数据库中创建了一个列,如col_meta,它包含一个序列化的PHP数组值,它可以节省空间并可以根据需要进行扩展或收缩。只是一个想法。

答案 4 :(得分:0)

如果它们全部相关且无法规范化(更不用说没有> 1被序列化)那么我想它会没问题。

你确定有些东西不能分成多个表吗?您能提供一份您正在收集的信息样本吗?

你可以把事情分成如

  • user_details
  • user_car_details
  • ...

答案 5 :(得分:0)

我通常会在大约20-30列后开始将它们拆分成单独的表。但是,它实际上是由您将如何使用数据驱动的。

如果您总是需要所有列,那么将它们拆分为单独的表将增加不必要的复杂性和开销。但是,如果有一组列倾向于一起访问,那么在这些表之间以1-1关系分割这些行可能会很有用。

如果要考虑性能,此技术非常有用,尤其是如果表中包含大型文本列。


最后,我会回应其他海报关于规范化的评论。在一个表中有100个列是相对罕见的,可能需要对表进行规范化。

例如列SETTING_1, SETTING_2, SETTING_3, SETTING_4可能在单独的SETTINGS表中更好,该表与原始表有1-many关系。

答案 6 :(得分:0)

谢谢大家,所以我认为将我的一些数据合并到一个列中会更好,这样可以节省更多空间并减少开销

答案 7 :(得分:0)

我注意到数据库中有大约65个列的性能损失,大约有10 000行。但可能缺乏服务器结构或其他东西。