duangu6588 2018-09-25 09:28
浏览 582

mysql group by如何优化和提高查询速度?

SELECT `time`,count(uid) as log 
FROM ( 
      SELECT distinct uid,
      FROM_UNIXTIME(createtime,"%Y-%m-%d") as time FROM `yq_user_log` 
      WHERE `createtime` BETWEEN 1535126400 AND 1537891199 AND `type` = 'login'  
     ) a GROUP BY time 
  • 写回答

1条回答 默认 最新

  • dswsl2016 2018-09-25 09:36
    关注

    For starters, you don't even need to subquery:

    SELECT
        FROM_UNIXTIME(createtime, '%Y-%m-%d') AS time,
        COUNT(DISTINCT uid) AS log
    FROM yq_user_log
    WHERE createtime BETWEEN 1535126400 AND 1537891199 AND type = 'login'
    GROUP BY time;
    

    I'm not sure that any index would help much here, because you are grouping by a function of a column. This would preclude an index helping with GROUP BY.

    评论

报告相同问题?

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度