Schema的优化和索引 - 范式和非范式
2009-09-02 00:00:00 来源:WEB开发网核心提示: 这些表属于第二范式,对于大部分需求已经足够了,Schema的优化和索引 - 范式和非范式(2),第二范式只是众多范式的其中一个,一个范式数据模型的缺点和优点那些对性能要求较高的需求,并且一些用户是付费用户,现在你想查看来自付费用户最新的10条信息,推荐用范式化的数据模型,尤其对于写操作较多的需求
这些表属于第二范式,对于大部分需求已经足够了。第二范式只是众多范式的其中一个。
一个范式数据模型的缺点和优点
那些对性能要求较高的需求,推荐用范式化的数据模型。尤其对于写操作较多的需求。使用范式化模型的好处如下:
范式化的更新速度要快于非范式化的更新。
当数据很好的范式化之后,就有很少或者没有重复的数据。因此也就会有很少的数据需要更新。
范式化的表常常很小,因此它们可以放到内存中,使性能变得更好。
没有多于的数据就意味着,当获取值的列表的时候,就不需要太多的DITINCT或者GROUP BY 的查询。考虑下以前的例子:如果不使用DISTINCT或者GROUP BY在非范式化的表查询唯一列表的部门是不可能的,但是如果DEPARTMENT是独立表,仅仅是个获取查询而已。
范式化数据模型的缺点就是获取数据。在很好的范式化模型上做一些复杂的查询,至少都需要连接一张表,也可能更多。这样的消耗不仅很大,并且使有些索引策略变为不可能。比如,范式化把列放到不同的表中,这些表都会从相同的索引中得到好处。
非范式化数据模型的缺点和优点
一个非范式化的模型可能工作的很好,以为任何数据都放在相同的表中,这样避免了连接。
如果你不需要连接表,来看个最坏情况下的查询-即使没有使用索引,那就是个全表的扫描。在数据没有在内存中的时候,这样的查询都要快于连接表的查询。因为它避免了随机的IO。
一个单独的表也允许使用更高效的索引策略。假使你有个用户发送消息的网站,并且一些用户是付费用户。现在你想查看来自付费用户最新的10条信息。如果你已经范式化数据模型了并且索引了message的发布时间,这个查询可能如下:
更多精彩
赞助商链接