现在在我的(测试版)网站上有一个名为用户数据的表,其中存储名称、哈希值(密码)、ipaddr、 session key 、电子邮件和消息号。现在我希望用户有个人资料描述、签名、位置(可选)以及其他内容。我应该把它放在一个单独的 mysql 表中吗?或者我应该共用 table 吗?为什么?
最佳答案
这称为vertical partitioning ,一般来说,无论您选择哪种选择,都不会产生太大差异。
一种垂直划分方法是将频繁更新的字段与很少更新的字段分开。想象一下 Stack Overflow 数据库中的一个 Users
表,其中包含 User_ID
、DisplayName
、Location
等...然后UpVotes
、DownVotes
、LastSeen
、NumberOfQuestionsAsked
等。第一组字段很少更改(仅在个人资料编辑时) ),而后者设置经常更改(正常事件时)。
另一种划分方法可能是在经常访问的数据和很少访问的数据之间进行划分。
这种分区在某些特定情况下可以产生更好的性能。
关于sql - 共享一张 table 还是不共享一张 table ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2926802/