假设您有一个包含 5000 万个帖子的 POSTS 表。这个表有:
ID, POST, CATEGORY_ID
1, "Hello world", 2
然后你有一个 CATEGORIES 表:
ID, CATEGORY_NAME
1, "Football"
2, "Baseball"
在网站上,您在 ORDER DESC 中列出这些帖子,使用连接显示帖子和类别名称。
[Baseball]
Hello World!
我正在考虑将(当有人创建新帖子时)CATEGORY_NAME 列添加到 POSTS 表中,以避免每次访问时都必须进行 JOIN。
按性能顺序,是个好主意吗?假设您每天有 10.000.000 名访问者(希望 :))
另一方面,我想知道您认为哪种数据库引擎更适合它,mysql?玛丽亚数据库? 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) 添加 2 列 (CAT_NAME, USER_NAME) varchar(25) 到 POSTS 表以避免连接。
最佳答案
保持正常化。
JOIN
的成本低于拥有更丰满的表所导致的成本。目前(少量数据)您看不到太大的性能差异。当表太大而无法缓存在 RAM 中时,规范化的性能优势就会大放异彩。
关于php - 是否避免加入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37782921/