让我说我有用户表:
| id |用户名|电子邮件|地址|
帖子表:
| id |发布| user_id |日期|
当我想要显示帖子时,每次我都需要使用user表从user_id中检索用户名。我想避免使用JOIN来进行这种简单的数据检索,所以我要做的是在post表中添加另一个coloumn:
| id |发布| user_id |用户名|日期|
这样,在显示帖子时,我不必使用JOIN来检索用户名
你认为这更好吗?
答案 0 :(得分:1)
没有。您的替代结构易受不一致的影响(例如,如果用户更改了他的名字;请在此处阅读第3范式http://en.wikipedia.org/wiki/Third_normal_form#.22Nothing_but_the_key.22) 你为什么不想使用JOIN?你有设置适当的索引吗?
答案 1 :(得分:0)
我认为这取决于设计和未来,我建议你不要这样做:
虽然从目前的角度来看,你会认为避免加入会有更好的性能,但是如果你的应用程序扩展了,那么使用这个非标准化的表结构就不好了。
例如,如果其中一张海报更改了用户名,你怎么能实现呢?更新整个表?如果你的数据可能超过10万亿元,那将很难,因为update
会在更新过程中锁定表格。
因此我不会推荐这个。
如果您的应用程序需要经常以这种方式更新,则可以省略加入性能。
答案 2 :(得分:0)
如果[id]
表的[users]
是主键,我认为使用JOIN
就足够了。
或者,如果您选择有限数量的posts
,例如10个帖子,也可以尝试这个sql:
select id, post, user_id,
(select username from users where id = user_id) as username, date
from posts
limit 0, 10