表结构:
想达到的效果:
传入一个日期,获取小于等于这个日期最近的一个日期并且用户数大于1;
例如:传入参数是 2022-11-2 预期返回结果是 2022-10-30;
目前实现的SQL:
SELECT max(日期) from 表名 where 日期 <= STR_TO_DATE('2022-11-02','%Y-%m-%d') GROUP BY 日期 HAVING count(用户ID)>1;
出现的问题:
速度极慢,表中数据量在1-2000W;
有考虑的思路:
在JAVA中遍历日期 进行单条日期查询 判断结果;(效率不确定性大,万一符合条件日期距离很远,需要查询SQL就多)