我试图获取会话日志表中的所有条目,其中会话有超过 10 个条目(即 session_id 的计数大于 10)。我现在有两个选择语句:
select * from log_metrics where session_id in
( select session_id from log_metrics
group by session_id having count(*) > 10
)
log_metrics 表相当大,大约。7,700,000 行。内部选择需要 12.88 秒并找到 178,000 个会话 ID。整个查询并没有像这样编写完成,但是当添加limit 10
到外部选择的末尾时,它在 18 秒内limit 100
完成,在 3 分 35 秒内完成。我尝试将限制添加到内部选择,但出现以下错误:
错误 1235 (42000): 这个版本的 MySQL 还不支持 'LIMIT & IN/ALL/ANY/SOME 子查询'
有没有办法重写这个查询来加快速度?我只需要从返回的 log_metrics 中获取大约 5,000 行,而不是会话 ID 的总数 178,000。
感谢您提供的任何帮助。我是 mysql 的新手,所以请原谅任何礼仪错误。