我在Mysql中有一个表用户配置文件构建,它包含许多可选列。 (约30列)
id, tel, live, mob, email...
Q1。我应该将它存储在30个表中(使用连接)还是将其存储在1个表中?
如果有30个表
如果用户没有保存数据,它可以保存很多空字段。
问。当我查询时,这将需要加入30次,这对于性能实例只会选择1个表并进行查询。 (为每个查询编写起来会更加困难)
if 1 table
列
中会有很多空字段问。我应该将其存储为空或“空”吗?
答案 0 :(得分:0)
Q1。我应该将它存储在30个表中(使用连接)还是将其存储在1个表中?
不,这不是一个好主意
Q值。当我查询时,这将需要加入30次,这对于性能instate来说只是选择1表和查询。 (为每个查询编写起来会更加困难)
是的,这会严重影响您的表现
一般情况下,您希望让您的表格相对较小(我的意见),但您应该为您可能需要的用户分组相关值:用户名,电子邮件,密码,last_login等。
虽然30列似乎有点高,但可能有一个合理的原因,但如果您发现许多字段在大多数时间都是空的,那么您应该重新考虑您的设计。那些字段不是空的时候是什么情况?例如,如果这些字段仅在用户输入了地址信息时才为空,那么您可能应该创建一个地址表。
这篇文章很好地解答了空对空问题:MySQL, better to insert NULL or empty string?