日期:2014-05-16  浏览次数:20531 次

消除表连接的几种方案 zz
摘自阿里软件写的《SaaS设计》

解决方案
  1. 冗余存储关联字段
      适用场景:业务需求上可以接受冗余导致的不一致,或者冗余数据可以很容易被同步更新
      示例场景:订单列表查询时,希望查看到订单的客户名称,原本订单上只记录了客户ID,通过关联客户表查询客户名称

  2. Cache缓存
       适用场景:变动概率不高,但是对于数据一致性要求较高
       示例场景:用户名(UserName)被很多业务所关联查询,但是也不适用于冗余方案(业务上不允许不一致,并且要保持所有冗余存储的地方同步更新很困难)

   3. 直接删除关联字段
      适用场景:不是必须包含的被关联表的字段,可以直接从列表查询中去除
      示例场景:订单列表中的产品型号等非关键字,其实并不一定要包含在订单列表中

   4. 拆分成多次查询
      适用场景:对于单个数据的查询,如果涉及多张关联表,有时多分次查询会比一次复杂的关联查询更为合适
      示例场景:订单表单中需要查询到关联产品的编码、型号等很多字段