四百万行数据,GROUP BY 后统计,然后 DESC 排序后,还要分页
LOG( 统计该用户操作的日志表 )
id 主键
user_id 用户 ID
date 创建日期
SQL( date, user_id 这两个字段建立复合索引 )
SELECT
user_id,
count(*) AS count
FROM
log
GROUP BY
date, user_id
ORDER BY
date DESC, user_id DESC
LIMIT 0, 10
以上 SQL 语句可以走索引,但是这时候如果要 count 字段进行排序,explain 就走全表了,执行了 1 分半,有其他办法优化吗?
SELECT
user_id,
count(*) AS count
FROM
log
GROUP BY
date, user_id
ORDER BY
count DESC, date DESC, user_id DESC
LIMIT 0, 10