利用 group by 查询网站每天的访问量
2017-08-30 10:05
176 查看
最近有个任务要统计网站每天的访问量,也就是统计一天之中有多少个不同的ip访问了网站。数据库的格式大概是每个ip访问网站的任何位置都会有一条记录,也就是说在一天之中,同一个ip有多条记录。数据库的格式大概如下:
开始的时候作死的根据传入的查询日期段,先将日期分割成每天,再一个日期一个日期的传入数据库查询每天的ip个数。sql语句大致如下:
结果当查询的时间段为两年的时候,要查询数据库700多次,效率极低。写出这样的代码,心情可想而知。QAQ
后来才发现使用 group by 直接可以一次性查出指定时间段内每一天的ip数量,当输入的时间跨度为两年时,也只会查询一次数据库。效率大大的提高了!修改之后的sql语句大致如下:
userid | ip | date |
---|---|---|
1 | 116.74.50.54 | 2017-08-28 |
2 | 116.74.50.54 | 2017-08-28 |
3 | 116.74.50.54 | 2017-08-29 |
4 | 116.74.50.35 | 2017-08-30 |
5 | 116.74.50.35 | 2017-08-30 |
6 | 116.74.50.35 | 2017-08-30 |
7 | 116.74.50.35 | 2017-08-30 |
8 | 116.74.50.5 | 2017-08-30 |
9 | 116.74.50.5 | 2017-08-30 |
10 | 116.74.50.5 | 2017-08-30 |
11 | 116.74.50.5 | 2017-08-30 |
select count(distinct a.ip) as total from sys_log a where a.date = '2017-08-30'
结果当查询的时间段为两年的时候,要查询数据库700多次,效率极低。写出这样的代码,心情可想而知。QAQ
后来才发现使用 group by 直接可以一次性查出指定时间段内每一天的ip数量,当输入的时间跨度为两年时,也只会查询一次数据库。效率大大的提高了!修改之后的sql语句大致如下:
select count(distinct a.ip) as total from sys_log a where a.date between '2015-08-30' and '2017-08-30' group by a.date
相关文章推荐
- 【Mysql】利用group by附带having进行聚类查询
- 利用group by查询id最大那条的数据
- 每天访问量至少达100万的29个社交网站
- 利用 GROUP BY 和 MAX 实现对表数据分组统计后的过滤查询(Oracle920)
- 【实战】利用联合查询--手工SQL注入拿下网站
- mysql统计网站每天的访问量
- mysql分页查询中如何利用group by进行去重操作
- 利用 ASP.NET 的Timer 来实现的访问统计,感觉比较适合高访问量的网站
- 利用Google来调用其他网站查询信息
- 怎么查询数据库每天的数据增量和访问量?
- 怎么查询数据库每天的数据增量和访问量?
- 4 查询网站是否收录和利用百度做网站推广
- 如何查看网站的访问量?查看访问量的二个主要方法【站长之家的SEO综合查询工具】
- 利用压缩网页来提升网站浏览速度
- 利用node.js写爬虫 爬取某相亲网站全部交友信息
- oracle按每天,每周,每月,每季度,每年查询统计数据
- 查询近7天,近1个月,近3个月每天的数据量,查询近一年每个月的数据量
- 访问量分类统计(QQ,微信,微博,网页,网站APP,其他)
- ASP.NET中利用存储过程实现模糊查询
- 利用springMVC拦截器配置网站根目录