编程那点事编程那点事

专注编程入门及提高
探究程序员职业规划之道!

sql优化:合理使用范式和反范式

数据库范式的目的是为了减少数据冗余,解除数据之间的业务耦合,提升灵活性。

范式的优点和缺点

优点

范式化的更新通常比反范式要快

当数据较好的范式化后,很少或者没有重复的数据

范式化的数据比较小,可以放在内存中,操作比较快

缺点

通常需要进行关联

反范式的优点和缺点

优点

所有的数据都在同一张表中,可以避免关联

可以设计有效的索引

缺点

表格内的冗余较多,删除数据时候会造成表有些有用的信息丢失

案例

在企业中很少能做到严格意义上的范式或者反范式,一般需要混合使用。

比如缓存衍生值,在论坛系统中我需要统计每个用户发了多少条消息,我们可以每次执行一个昂贵的子查询来计算并显示它,也可以在user表中新建一个num_messages列,每当用户新发消息或删除消息时来更新这个值。

在阿里巴巴的《深入MySQL实战》一书中,也指出可以适当荣誉,平衡范式,避免3 个以上表Join。

阿里巴巴的《深入MySQL实战》

未经允许不得转载: 技术文章 » 数据库 » sql优化:合理使用范式和反范式