【发布时间】:2010-04-02 18:39:00
【问题描述】:
只是一个关于数据库性能的简单问题。我将在下面概述我的网站目的作为背景。
我正在创建一个字典站点,它将用户定义的单词保存到数据库中。我想知道是否为每个用户创建一个单词表或保留一个大量单词表。该站点将用于整个学校,因此单个单词表会很大!
数据库结构如下:
一个用户表:
- User_ID 主键,
- 用户名
- 首先
- 最后
- 密码
- 电子邮件
- 国家
- 研究
- 排名
- 发送信息
- 捐赠
- 已加入
- 上次登录
- 登录
- 正确
- 尝试
- 管理员
- 活动
还有一个单词表:
- User_ID 主键
- 字
- 词汇
- 拼写
- 已定义
- 已定义尝试
- 拼写
- 拼写尝试
- 判刑
- 已判刑
所以我要问的是,在性能方面,我是否应该在每个用户加入网站时为他们创建一个新表 - 每个用户随着时间的推移可能有成百上千的字词?还是拥有一张包含成千上万条记录并按 User_ID 过滤的海量表会更好。我认为我不会执行很多表连接。
我的直觉是为每个用户创建一个新表,但我想我会寻求专家的建议!提前致谢。
【问题讨论】:
-
使用
words.User_ID列作为主键将限制每个用户最多一个字。要么使用words (User_ID, Word)作为主键,要么在words.User_ID上添加一个代理列作为主键和索引(在决定之前阅读stackoverflow.com/questions/532363/… 中建议的问题)。 -
对于 SO 上的格式化帖子,您不需要添加段落标签。用四个空格缩进行以将它们格式化为代码。在行前加上“-”、“+”、“*”或“1.”来获取列表。单击帖子工具栏中的橙色问号以获取更多信息,这会将您带到stackoverflow.com/editing-help。
标签: mysql database performance