MySQL 使用LEFT JOIN关联表统计子表记录数
背景
最近遇到一个业务主表关联子表,主键关联子表查询子表记录总数,目前有两种方式:
一、常用select查询方式
比如,常用操作方式
select *,(select count(字段1) from aa where id=t.id)cnt from test t;
这样写看起确实没什么问题,但是随着系统运行时间过久,你会发现sql执行很慢,以至于前端会报time out异常,这其中原理就不讲了,举例如下:
这一段代码执行时间花费了28秒左右,这....
我分析来了一下,整个sql最耗时间的是这句
因为这张表数据太多了,全量查询肯定会造成数据变慢。
二、LEFT JOIN 方式
这里最主要就是left Join执行count函数的使用
改造后的执行时间大概在2秒左右,这差距真大。
以上内容仅作为记录知识使用,不对之处请指出。
转载自:https://juejin.cn/post/6986530391439966221