max是运行机制,在很多博客里面都有,可以搜到的。我主要讲一下优化过程
1.利用order by
利用主键索引查询出所有 利用order by 排序查询需要字段 再利用group by分组取第一条原理,获取到对应的最大值
SELECT
id
FROM
(
SELECT
id,sku_id
FROM
`goods_rank_monitor_sku`
WHERE
user_id in (6,96,97)
AND spu_keywords_id IN (4098,3682)
ORDER BY id DESC
) as p
GROUP BY sku_id
2.利用索引原理
在第一条也是利用索引,这个也是利用索引原理,不过这个加索引要加对了才起作用。
SELECT
Max(id)
FROM
`goods_rank_monitor_sku`
WHERE
user_id in (6,96,97)
AND spu_keywords_id IN (
4098,
3682
)
GROUP BY
sku_id
这里id本是主键id,唯一索引。 所以这儿的索引应该加在where里面的条件字段上面,这儿我讲索引加载user_id上的。这个速度发生 质的飞越
备注:本人是新人一枚,刚出来工作不久,记录本人一点点收获和心得,希望我可以帮到我后面的新人。有什么不对的,希望大佬可以提出指导谢谢