空白的记忆挥之不去 2022-11-03 10:35 采纳率: 0%
浏览 32

MYSQL 分组语句的优化

表结构:

img

想达到的效果:
传入一个日期,获取小于等于这个日期最近的一个日期并且用户数大于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就多)

  • 写回答

3条回答 默认 最新

  • copeterol 2022-11-03 10:48
    关注

    可以把

    select 日期 from 表名 group by 日期 having count(用户ID) > 1;
    

    单独做成一个表或者放在redis里

    评论

报告相同问题?

问题事件

  • 创建了问题 11月3日

悬赏问题

  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看