企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
[TOC] # 范式的优点和缺点 为性能问题而寻求帮助的时候,经常会被建议对表进行范式化设计 ,尤其是写密集的场景.通常这是个好建议.因为下面这些原因,范式化通常能够带来好处 * 范式化的更新操作通常比反范式要快 * 当数据较好地范式化时,就只有很少或者没有重复数据,所以只需要修改更少的数据 * 范式化的表通常更小,可以更好的放在内存里,所以执行操作会更快 * 很少有多余的数据意味着检索列表数据更少需要DISTINCT或者GROUP BY语句,还是前面的例子:在非范式化的结构中必须使用DISTINCT或者GROUP BY才能获得一份唯一的部门列表,但是如果部门(DEPARTMENT)是一张单独的表,则只需要简单的查询这张表就行了 范式化设计的表的缺点是通常需要关联,稍微复杂一些的查询语句在符合范式的表上都可能需要至少一次关联,也许更多.这不但代价昂贵,也可能使得一些索引策略无效.例如:范式化的设计可能将列存放在不同表中,而这些列如果在一个表中本可以属于同一个索引 # 反范式的优点和缺点 反范式的表因为所有数据都在一张表中,可以很好的避免关联 如果不需要关联表,则对大部分查询最差的情况下---即使表没有使用索引---是全表扫描.当数据比内存大时这可能比关联快得多,因为这样避免了随机IO(全表扫描基本上是顺序IO,但也不是100%,和引擎的实现有关)