好的,我正在创建一个游戏,我有一个表,我保存了很多关于成员的信息,所以我有很多字段。一张表中有多少个字段?有关系吗?也许我应该把这些信息分成两三四个表?你觉得怎么样?
答案 0 :(得分:7)
如果您认为列数太多,则可能有重复组,这表明您应该规范化数据库。请在此处查看示例:Description of the database normalization basics
MySQL 5.5 Column Count Limit
每个表的最大行大小为65,535字节。
有4096列的硬限制 每桌
答案 1 :(得分:5)
将数据拆分成表通常不应由列数决定,而是由数据的性质决定。将大表拆分为较小表的过程称为normalization。
我能想到拆分表的另一个原因是,如果你可能需要集群中的数据,即你经常需要列AD或列EL,但绝不需要所有列或列DF,那么你可以拆分表分为两个表,一个包含列AD和主键,另一个包含列EL和主键。
答案 2 :(得分:1)
谈到限制,MySQL说它是4096(source)。
然而,我还没有看到如此大的表,即使那些庞大的数据挖掘表也没有接近。
只要您的数据库是normalized,就不应该担心它。一旦你可以发现两次存储相同的数据(例如,player
表可能有player_type
列存储一些固定值),值得将这些数据移动到单独的表中,而不是复制其他信息。表,因此减少列数(但这只是标准化的“副作用”,而不是驱动它的东西)。
答案 3 :(得分:1)
我从未亲自遇到过超过500列的列,但是没有最大尺寸,没有理由没有设计要求。但要注意从它做SELECT *。
答案 4 :(得分:-3)
“关于成员的信息” - 嗯总是很难,但我总是将可识别信息分成另一个表,并使用salt键将2链接在一起。这样就不会“劫持”用户名和密码等。并且你总是可以使用SALT作为会话变量而不是用户名/密码/ userId等等。
通常我只在1个表中存储ID,盐和加入日期。正如我所说,其余的我试图“隐藏”,以便他们不能被“链接/劫持”。
希望帮助