数据库有是单表300W+的数据,专门记录网站访问URL和IP这类的数据。
目前有个需求:就是查询指定时间范围内,URL访问次数并且使用排序。
遇到的问题:使用GROUP BY分组后,在order by count(*) desc 以访问次数的高低排序就会特别的慢。如过不排序查询的时间: 0.177s。
如果加了排序,查询的时间会特别长。
这个时间段的数据量(pageurl这个字段是有许多重复的,因为是网站的URL)
select count(*) from `www.t7788.com` where time >='2021-05-02 01:10:11' and time <='2021-05-09 23:11:52' ;
没加order by count(*) desc排序:
select pageurl,count(*) AS count2 from `www.t7788.com` where time >='2021-05-02 01:10:11' and time <='2021-05-09 23:11:52' GROUP BY pageurl limit 0,30;
加了order by count(*) desc
select pageurl,count(*) AS count2 from `www.t7788.com` where time >='2021-05-02 01:10:11' and time <='2021-05-09 23:11:52' GROUP BY pageurl order by count(*) desc limit 0,30;
希望可以给我提供下优化意见。主要就卡在了order by count(*) desc这里。