今天针对一个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亿条记录。