关于关联查询的处理
2020-11-27 本文已影响0人
瓢鳍小虾虎
mybatis关联查询配置有2种:关联嵌套结果,关联嵌套查询
关联的查询过程中如果关联的表可能查到很多数据,应该考虑从业务场景上把这种关联查询杜绝,设计成分开查询的场景。
高并发项目是明令禁止未知量的关联查询的。
阿里的规范中禁止多余3张表的join操作。实际开发中尽量不适用join,用多个select分步查找。
首先join操作会锁定被查询的数据,其他业务无法更新操作,如果涉及多个聚合函数并且缓存也没做控制,相当于同时锁定了多张表,严重影响系统整体性能。虽然单看join比分步查询效率要高一点,但是整体看使用join就是因小失大,弊大于利。
既然不使用join,分步查找就要尽量优化。
第一,关联字段要加索引,可以提高查询效率。查询策略是先查询小范围的数据,然后用得到的结果去匹配另一张表。
第二,表设计上可以考虑冗余,预先设计好一些常用的统计表,提高系统查询效率,但是要考虑数据一致性问题,是即时同步还是定时同步需要根据业务场景和性能综合考量。
另外从设计理念上应该了解下OLTP和OLAP,可以从更高层面对查询效率问题有个理解。
相关地址:https://www.zhihu.com/question/24110442/answer/851671343