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

要不要做冗余字段?
冗余是为了避免join, 但避免join未必要一定冗余。你可以先把a关联的b_id查出来,然后再去B表里查一次。

那么什么情况下应该选择冗余,什么情况下选择查询两次呢?除了要看数据会不会更新,还有一个考虑因素:

1. 如果只需要看A的单行记录,及这行记录对应的B记录,使用两次查询就够了
2. 如果需要查看A的列表,及对应的B记录,那就可以考虑把B记录冗余到A表,也可以不冗余。不冗余的话,就要收集A列表中所有的b_id,然后批量地去B表中执行in查询,稍微有点麻烦
3. 如果需要根据B表中的字段查询A记录,并带出相关的B记录,那就只能用冗余了。