想象一下,您有一个包含5000万个帖子的表格帖子。该表有:
ID, POST, CATEGORY_ID
1, "Hello world", 2
然后你有一个CATEGORIES表:
ID, CATEGORY_NAME
1, "Football"
2, "Baseball"
在网站上,您可以在ORDER DESC中列出这些帖子,使用联接显示帖子和类别名称。
[Baseball]
Hello World!
我正在考虑添加(当有人创建新帖子时)CATEGORY_NAME列到POSTS表格,以避免每次访问时都必须进行加入。
为了表现,是个好主意?想象一下,你每天有10.000.000名访客(希望如此:))
另一方面,我想知道你认为哪种数据库引擎更适合它,mysql? MariaDB的? MongoDB的?
编辑:
想象一个更真实的场景:我需要3个联接才能显示POST + CATEGORY + USER_NAME。
POSTS: 50 million rows
CATEGORIES: 100 rows
USERS: 10 million rows
选项A)在3个表之间加入以显示:
[Baseball]
Hello World
- By John
选项B)向POSTS表添加2列(CAT_NAME,USER_NAME)varchar(25)以避免加入。
答案 0 :(得分:0)
保持正常化。
JOIN
的费用低于拥有丰富的桌子所造成的费用。目前(少量数据)你看不出太多的性能差异。当表太大而无法在RAM中缓存时,规范化的性能优势将会大放异彩。