【发布时间】:2011-12-03 17:21:23
【问题描述】:
我在一个网站上有一个 cmets 部分,如果可能的话,我想精简一下,这样它对数据库的影响就不那么大了。当用户选择一个帖子时,如果它有与之关联的 cmets,它会列出这些 cmets。当 cmets 列出时,它从另一个表中获取用户名。我将用户的 id 存储在 cmets 表中,并使用该 id 从 users 表中选择记录。并显示为“用户”说:
假设我在一个帖子上有 1000 个 cmets,它将访问用户表 1000 次以获取用户名。我认为这可能是一个糟糕的设计。我想到了一些解决方案,但不知道在这种情况下会推荐什么。
我应该将用户名存储在 cmets 表中吗?
我应该将所有已经调用的用户名存储在会话数组中吗?
将所有用户名放在一个文件中,然后从该文件中调用?
还是有其他我没有想到的解决方案?
我有点困惑。我认为我通过使用评论表中的 ID 做正确的事情,然后使用它来获取用户名,但是在阅读了大约一百万篇关于使用对数据库的影响较小的帖子之后,我开始质疑自己。
哇,感谢所有有用的答案。这是表格方案,我不知道为什么我最初没有放入。
cmets 笑话表:
id | author_id | joke_id | date_created | body
---+-----------+---------+--------------+-----
1 | 3 | 2 | 2011-06-12 | this is a comment
对于用户来说:
id | user_name | password | email | date_joined | visible
---+-----------+----------+-------+-------------+---------
3 | booboo | password | email | todays_date | 1
【问题讨论】:
-
你是在使用
JOIN,还是在做多个查询? -
最好将表格方案添加到问题中。
-
如果你的表中有关系而不是使用 joins 不需要每次都触发一个查询,它只是一个包含所有信息的查询。
-
@JaredFarrish 当我获取用户名时,我正在执行多个 SELECT 查询
-
您需要尽可能使用
JOINs 从与当前查询相关的其他表中引入数据。