2011-02-17 116 views
1

假设你有一个博客帖子,用户可以subscrive来评论 是为更快地通过专门的管理像订阅表中搜索: ID,邮政,用户MySQL的搜索和索引性能

或者是更快在users表中有一个字段,其子字段为: 订阅= | 2 | 4 | 18 | 21 | 33 |

或者在发布表中有一个字段与提供该帖子的用户相比更快: Users_subscrive = | 1 | 2 | 4 | 6 | 9 |

+0

第二个建议是具有多个值的字段吗? – Mike 2011-02-17 16:19:33

+1

@Mike这就是它看起来像 – 2011-02-17 16:21:19

回答

2

最好是有一个单独的表Subscriptions,与IDPostUser

(假设ID该表的自动增量PK,发布FK到表PostsUser一个FK到表Users

无论从逻辑上看(订阅是它自己的实体,从而它自己的表)就数据库性能而言,一个单独的表是要走的路。

这是一个叫做normalization过程中,它可以让你做连接,并进行复杂的查询,如“给我订阅了这个帖子最后5个用户”或“得到所有帖子此用户自从他上次访问以来已发生了变化“。

它也不限制您的最大订阅限额(其中用户表中的固定字段总是有一个长度)。

它会让你以后到轻松扩展你的模型。例如,不同类型的订阅:通过RSS,通过邮件,最喜欢的帖子得到通知...

最后但并非最不重要的,因为你使用MySQL,这是一个关系数据库,这种工作方式(关系,get它?)在MySQL中快得多。它允许索引(快速搜索),外键(用户无法订阅不存在的帖子,如果帖子被删除,所有订阅自动删除)等等。

1

如果索引正确,搜索实际表格字段会更快。

事实上,即使它们没有编入索引,它也应该更快!