我在 Mysql 中构建了一个表用户配置文件,它包含许多可选列。(约30列)
id, tel, live, mob, email...
Q1。我应该将其存储在 30 个表中(使用联接)还是将其存储在 1 个表中?
如果有 30 张桌子
如果用户没有保存数据,它可以保存许多空字段。
问:当我查询时,这将需要连接 30 次,这对性能不利,只选择 1 个表并查询。(每个查询都会更难写)
如果有 1 个表
列中将有许多空字段
问:我应该将其存储为 NULL 还是“空”?
我在 Mysql 中构建了一个表用户配置文件,它包含许多可选列。(约30列)
id, tel, live, mob, email...
Q1。我应该将其存储在 30 个表中(使用联接)还是将其存储在 1 个表中?
如果有 30 张桌子
如果用户没有保存数据,它可以保存许多空字段。
问:当我查询时,这将需要连接 30 次,这对性能不利,只选择 1 个表并查询。(每个查询都会更难写)
如果有 1 个表
列中将有许多空字段
问:我应该将其存储为 NULL 还是“空”?
Q1。我应该将其存储在 30 个表中(使用联接)还是将其存储在 1 个表中?
不,这不是一个好主意
问:当我查询时,这将需要连接 30 次,这对性能不利,只选择 1 个表并查询。(每个查询都会更难写)
是的,这会严重影响您的表现
一般来说,您希望您的表相对较小(我的意见),但您应该对相关值进行分组,对于您可能想要的用户:用户名、电子邮件、密码、last_login 等。
虽然 30 列似乎有点高,但它可能是有正当理由的,但如果您发现很多字段大部分时间都是空的,那么您应该重新考虑您的设计。这些字段不为空的情况是什么?例如,如果这些字段仅在用户输入他们的地址信息时才为空,那么也许您应该制作一个地址表。
这篇文章很好地解决了空与空的问题:MySQL,最好插入 NULL 还是空字符串?