0

我今天阅读了这篇关于连接性能的博客文章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 表中,因此有一个重复值。

考虑到这个确切的情况,严格遵循可能会降低性能的规范化规则真的值得吗?在这种情况下什么会更好?

4

1 回答 1

1

在我看来,合乎逻辑的选择是放弃该is_avatar领域,而只是user_profile.avatar参考image_id...

于 2012-05-19T15:31:34.757 回答