首页 >> 民生视野

的优化和索引范式和非范式呢

民生视野  2021-08-24 17:42 字号: 大 中 小

Schema的优化和索引 - 范式和非范式2

这一切都是有预谋的。” 这些表属于第二范式,对于大部分需求已经足够了。第二范式只是众多范式的其中一个。

一个范式数据模型的缺点和优点

那些对性能要求较高的需求,推荐用范式化的数据模型。尤其对于写操作较多的需求。使用范式化模型的好处如下:

范式化的更新速度要快于非范式化的更新。

当数据很好的范式化之后,就有很少或者没有重复的数据。因此也就会有很少的数据需要更新。

范式化的表常常很小,因此它们可以放到内存中,使性能变得更好。

没有多于的数据就意味着,当获取值的列表的时候,就不需要太多的DITINCT或者GROUP BY 的查询。考虑下以前的例子:如果不使用DISTINCT或者GROUP BY在非范式化的表查询唯一列表的部门是不可能的,但是如果DEPARTMENT是独立表,仅仅是个获取查询而已。

范式化数据模型的缺点就是获取数据。在很好的范式化模型上做一些复杂的查询,至少都需要连接一张表,也可能更多。这样的消耗不仅很大,并且使有些索引策略变为不可能。比如,范式化把列放到不同的表中,这些表都会从相同的索引中得到好处。

非范式化数据模型的缺点和优点

一个非范式化的模型可能工作的很好,以为任何数据都放在相同的表中,这样避免了连接。

如果你不需要连接表,来看个最坏情况下的查询-即使没有使用索引,那就是个全表的扫描。在数据没有在内存中的时候,这样的查询都要快于连接表的查询。因为它避免了随机的IO。

一个单独的表也允许使用更高效的索引策略。假使你有个用户发送消息的站,并且一些用户是付费用户。现在你想查看来自付费用户最新的10条信息。如果你已经范式化数据模型了并且索引了message的发布时间,这个查询可能如下:

哪些病人不能用事后紧急避孕药
杭州白癜风医院哪家医院好
济南哪家治疗妇科医院好
推荐资讯