0

我在 Mysql 中构建了一个表用户配置文件,它包含许多可选列。(约30列)

id, tel, live, mob, email...

Q1。我应该将其存储在 30 个表中(使用联接)还是将其存储在 1 个表中?

如果有 30 张桌子

如果用户没有保存数据,它可以保存许多空字段。

:当我查询时,这将需要连接 30 次,这对性能不利,只选择 1 个表并查询。(每个查询都会更难写)

如果有 1 个表

列中将有许多空字段

:我应该将其存储为 NULL 还是“空”?

4

1 回答 1

0

Q1。我应该将其存储在 30 个表中(使用联接)还是将其存储在 1 个表中?

不,这不是一个好主意

问:当我查询时,这将需要连接 30 次,这对性能不利,只选择 1 个表并查询。(每个查询都会更难写)

是的,这会严重影响您的表现

一般来说,您希望您的表相对较小(我的意见),但您应该对相关值进行分组,对于您可能想要的用户:用户名、电子邮件、密码、last_login 等。

虽然 30 列似乎有点高,但它可能是有正当理由的,但如果您发现很多字段大部分时间都是空的,那么您应该重新考虑您的设计。这些字段不为空的情况是什么?例如,如果这些字段仅在用户输入他们的地址信息时才为空,那么也许您应该制作一个地址表。

这篇文章很好地解决了空与空的问题:MySQL,最好插入 NULL 还是空字符串?

于 2013-10-01T23:41:01.187 回答