我今天看了這篇關於連接性能的博文http://www.andrewrollins.com/2009/06/21/mysql-join-performance/。正如所見,加入可能會以某種方式降低性能。Mysql連接vs有重複
現在我們來看一個兩個表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表中,因此有一個重複值。
真的值得嚴格遵循可能降低性能的規範化規則,考慮到這種情況嗎?在這種情況下會更好嗎?
我不明白,爲加盟者'user_profile'的需要,如果你不需要從它的列。否則,我不會看到user_profile.avatar字段在給定用戶配置文件可能有多個圖像時如何工作... –
一個用戶只能在用戶列表頁面(瀏覽用戶)中顯示1個頭像和頭像圖像。在瀏覽用戶中,它是具有暱稱,年齡和頭像圖片的用戶列表。在瀏覽用戶頁面上,頭像鏈接到用戶個人資料。我不確定你的意思是不需要列。我需要瀏覽用戶關於暱稱,年齡和頭像的頁面數據。 當您在用戶個人資料頁面上時,您還可以看到用戶圖庫。用戶註冊時,頭像圖像也自動成爲用戶圖庫的一部分。 – JohnyFree