mysql中count和join联用导致搜索时间过慢问题

percentfl 2020-03-18 11:15:54
目前我的需求是这样的:
我需要查询一下数据的总数,并且是有条件约束的情况下查询,而条件又分布在多个数据表中。
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条件来加快查询速度。
...全文
1175 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoxiangqing 2020-03-19
  • 打赏
  • 举报
回复
myHandleType 有没有建索引?
xiaoxiangqing 2020-03-19
  • 打赏
  • 举报
回复
跟数据量大小,机器配置有关
percentfl 2020-03-19
  • 打赏
  • 举报
回复
引用 1 楼 吉普赛的歌 的回复:
关联表的字段有没有建立索引, 这个非常重要。


多谢回复。
这个已经建立了,截图的时候选错图片了,但是还是速度很慢

吉普赛的歌 2020-03-18
  • 打赏
  • 举报
回复
关联表的字段有没有建立索引, 这个非常重要。

27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧