数据库的设计与查询
在设计之初应该要考虑到查询的效率。比如一个表的设计是这样的
id、userId、productId、order_no
查询的时候需要显示userName、productName、orderStatus。
那么以目前这种设置,那么必然要关联user表、product表、order表。
根据阿里巴巴的开发手册:禁止连三张表以上进行查询。抛开规范不说,用表连接查询效率肯定慢。那么怎么办呢?
两种方式:
1、数据冗余
2、拆分联查,在service层进行数据合并(重service、轻DB)
先说说第一种,数据冗余,直接把相关联的数据放在一张表去,这很简单。但是数据冗余的数据怎么维护呢?以上面表的设计为例,添加的时候userName为:凯。当这个用户改了名字,那么这个数据就是脏数据了。所以不能冗余经常更新的数据。
第二种方式,应该比较好的。把连表数据拆分,再从service进行合并。
相关资料: