表之间使用联结查询时,以left join为例,当联结的表较多,并且符合条件的记录个数也很多时,查询的效率变得十分低下,不过改变一下方法,却可以避免这个问题。
例如:要对系统中各个公司的业务进行统计,公司的业务有很多:业务1、业务2、业务3......业务10,就假设有10项业务,初始的想法是将公司表与这10张业务表进行left join,按公司分组,然后使用count(distince 业务表主键),来统计每个公司的各个业务量。但这种方法执行效率太低,换一种做法:先将公司表分别与10张业务表left join,按公司分组,这样得到10个查询结果,然后将公司表与这10个查询结果进行left join,这样也可以得到想要的结果。
感觉最大的区别就是公司表与那10个查询结果之间的对应关系是1对1,而公司表与10个业务表之间的对应关系是1对多,也许就是这个原因,导致了效率的天壤之别。
换种方法,提高left join查询的效率
最新推荐文章于 2024-12-19 13:49:40 发布