Mysql join vs有重复

时间:2012-05-19 15:24:38

标签: mysql database-normalization

我今天在博客文章http://www.andrewrollins.com/2009/06/21/mysql-join-performance/上阅读了关于加入效果的文章。如图所示,加入可能会以某种方式降低性能。

现在让我们看一下两个表的例子,user_profile和user_gallery。

user_profile
user_id | avatar | nickname | ...

user_gallery
image_id | user_id | image | caption | is_avatar

在页面浏览用户上,将列出用户的昵称和头像图像。

我可以通过加入

获取用户列表中的图像
INNER JOIN user_gallery ON user_gallery.user_id=user_profile.user_id WHERE user_gallery.is_avatar=1

或者我可以将头像字段添加到图像路径中。在这种情况下,我不需要使用 is_avatar 字段,并且我拥有在表user_profile中显示用户所需的所有数据。因此不需要额外的连接。但由于头像图像是用户图库的一部分,这意味着头像的值也在user_gallery表中,因此一个重复值。

是否真的值得严格遵守可能会降低性能的规范化规则,并牢记这个确切的案例?在这种情况下会更好吗?

1 个答案:

答案 0 :(得分:1)

在我看来,合乎逻辑的选择是放弃is_avatar字段,只有user_profile.avatar引用image_id ......