mysql 优化-子查询和left join(一)

今天针对一个mysql做优化
具体如下设计到几张表
商品表: goods
会员消费表:member_consumes
会员表: members
会员标签表member_label
分组标签表: group_label

大体功能是这样的在分组营销的分组数据下面查看会员消费前十的商品是哪些
比如:在孕妇装分组下面会员买的最多的是那些牌子的商品

这里写图片描述
这里写图片描述

之前的sql语句是这样的

SELECT g.name name ,count( c.goods_id) num FROM member_consumes c LEFT JOIN join goods g on LPAD(c.goods_id,8,’0’)=g.code WHERE c.member_no in
(select no from members where id in
( select distinct member_id from member_label where label_id in
(select label_id from group_label where group_id=33)
)
)
group by c.goods_id order by num desc limit 10;

查询时间是163s

而且没有加索引,一开始我以为是索引问题,后来加上还是163s。查看数据库发现是member_consumes 和goods 的数据大概每张表是1w条。1w*1w大概是1亿条记录。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值