范式化的数据库中,每个试试数据会初选并且只出现一次。
反范式化的数据库中,信息是冗余的,可能会存储在多个地方。
范式的优点和缺点
为了提高性能,经常对schema进行范式化设计,尤其是写密集的场景。
范式的优点:
- 范式化的更新操作通常比反范式化要快
- 当数据较好的范式化时,就只有很少甚至没有重复数据,所以只需要修改更少的数据。
- 范式化的表通常更小,可以更好的放在内存里,所以执行操作会更快。
- 很少有多余的数据,意味着检索列数据时,更少的需要DISTINCT和GROUP BY。
范式的缺点:
- 通常需要关联。稍微复杂一些的查询语句在符合范式的schema上都可能至少一次关联,甚至更多。
- 关联时肯呢个使一些索引策略失效
反范式的优点
反范式的优点
- 数据都在一张表中,很好的避免关联:
范式索引会在一个索引中又排序又过滤(另一个表作为过滤条件),如果目的数量少且分散,效率就会很低。而在一个表中增加一个索引,效率就会很高效。
混用范式化和反范式化
完全的范式化和完全的反范式化schema都是实验室才有的,在实际应用中经常需要混用,
- 最常见的反范式化数据时复制或者缓存,在不通的表中存储相同的特定列(可以使用触发器更新缓存知,使方案更简单)