范式化的优点:
范式化更新操作通常比反范式化要快。
当数据较好的范式化时,就只有很少或者没有重复数据,所以,只需要修改更少的数据。
范式化的表通常更小,可以更好地放在内存里,所以执行操作会更快。
很少有多余的数据意味着检索列表数据更少需要distinct或者group by 语句。
范式化的缺点:
范式化设计schema通常需要关联。稍微复杂一些的查询语句在符合范式的schema上都可能需要至少一次关联,也许更多。这样做代价昂贵,也可能使一些索引策略无效。比如,范式化可能将列放在不同的表中,而这些列在同一个表中可以数据同一个索引。
反范式的优点
可以很好地避免关联。
如果不需要关联表,对大部分查询最差情况,即没有使用索引,全表扫描。当数据币内存大时这可能比关联要快很多, 这样避免了随机I/O。
在真实环境中很少会极端地使用范式化或者反范式化的schema。而是可能使用部分范式化的schema、缓存表、以及其它技巧。最常见的反范式化数据的方法是复制或者缓存,在不同的表中存储相同的特定的列。
本文出自 “分享学习” 博客,谢绝转载!
原文:http://kuogai.blog.51cto.com/8231719/1950020