我在Mysql中构建了一个表用户配置文件,它包含许多可选列。(约30栏)
id, tel, live, mob, email...Q1。我应该将它存储在30个表中(使用联接)还是存储在一个表中?
if 30表
如果用户不保存数据,它可以保存许多空字段。
Q.当我查询时,这将需要连接30次,这会对性能不利吗?只需选择1个表和查询即可。(为每个查询编写将更加困难)
if 1表
列中将有许多空字段。
Q.应该将它存储为空还是空?
发布于 2013-10-01 23:41:01
Q1。我应该将它存储在30个表中(使用联接)还是存储在一个表中?
不,这不是个好主意。
当我查询时,这将需要连接30次,这会对性能不利吗?只需选择1个表和查询即可。(为每个查询编写将更加困难)
是的,这会严重影响你的表演。
一般来说,您希望您的表相对较小(我的意见),但您应该分组相关的值,对于您可能想要的用户:用户名、电子邮件、密码、last_login等。
虽然30列似乎有点高,可能有一个合理的理由,但如果您发现许多字段大部分时间是空的,那么您应该重新考虑您的设计。当这些字段不为空时,情况如何?例如,如果这些字段仅在用户输入地址信息时才为空,那么也许您应该创建一个address表。
这篇文章很好地解释了空问题:MySQL, better to insert NULL or empty string?
https://stackoverflow.com/questions/19127673
复制相似问题