目前我的需求是这样的:
我需要查询一下数据的总数,并且是有条件约束的情况下查询,而条件又分布在多个数据表中。
sql:
SELECT
count( a.id )
FROM
handle_order_list a
LEFT JOIN order_info b ON a.orderId = b.id
LEFT JOIN order_field c ON a.id = c.id
LEFT JOIN dic_label_list d ON b.labelId = d.id
WHERE
a.myHandleType IN ( 7, 8 )
其中a和c是1对1关系,a和b是多对1关系、a和d是1对多关系,abc的数据量都在40W条以上;
id为各表主键,a.orderId和b.labelId已经添加了索引
而bcd中都要有具体的条件来筛选出工单的数量;
查询出的数量必须以a表为基准;
现在的问题是,当count函数和join一起使用时,会造成查询的时间过长,
如果我没有join的情况下查询很快,如果添加3个join,查询时间就会超过15s。
这个时间过长,请问各位有没有什么能过改进的方法?
附上EXPLAIN结果:
目前我只想到一种,就是根据条件来判断是否需要进行join,来删除一部分的join条件来加快查询速度。