背景:项目中有个小需求需要统计某个地区在某个时间段的注册用户数,已经提供该地区对应的ip段,注册数据表中存有注册用户ip。

初期的想法是:完善ip段内的所有ip数,形成一个列表,然后用注册用户ip字段进行in查询。

实施的时候出了以下问题:

1.读取ip段文件,完善150多个ip段时出现了1000多W的ip信息。完善ip段信息,主要是通过 ip2long() 函数和 long2ip() 函数(先将ip段的起始ip和结束ip均转为长整形,然后完善长整形之间的值,并每个都转回ip信息)。

2.注册表的数据量在5000W左右,in 查询ip列表,测试1000个ip查时耗时到60s

改善后的想法:考虑到php有转换ip和long类型的参数,果断百度了下mysql是否有。幸运的是,mysql足够强大也有对应的 inet_aton() 和 inet_ntoa() 函数

改善后的做法是直接在mysql端进行转换比较,如下:

select count(userId) as user_num,date_format(FROM_UNIXTIME(`addtime`),'%y%m') sdate
from t_user_attr
where addtime >= unix_timestamp("2014-09-01 00:00:00")
AND addtime < unix_timestamp("2014-10-31 23:59:59")
AND inet_aton(regIp) >= inet_aton("1.34.0.0") AND inet_aton(regIp)<=inet_aton("1.35.255.255")

运行的效果是:

测试ip段包含ip数达近20W个时,查询用户id用了23 s左右 (测试ip段为 60.248.0.0|60.251.255.255)

总结:当数据量级大了起来后,以前体现不出的性能就会很明显。

上面的sql还可以优化下,将条件里时间的比较在php端完成(时间字符串转时间戳),不在mysql端转换。

php和mysql关于ip段查询相关推荐

  1. mysql 指定ip段 掩码_网络ip段划分子网掩码

    局域网子网知识 子网掩码的计算 一.子网掩码的计算 TCP/IP网间网技术产生于大型主流机环境中,它能发展到今天的规模是当初的设计者们始料未及的.网间网规模的迅速扩展对IP地址模式的威胁并不是它不能保 ...

  2. 获得国内中国电信,网通,铁通的最新ip段的方法

    APNIC是管理亚太地区IP地址分配的机构,它有着丰富准确的IP地址分配库,同时这些信息也是对外公开的!下面就让我们看看如何在Linux下获得一些电信运营商的IP地址分配情况: wget http:/ ...

  3. sql 从ip列表中查询ip段_IP地址段查询深度优化案例

    作者介绍 陈华军,苏宁IT总部架构专家,PostgreSQL及MySQL产品技术负责人,PostgreSQL中文社区核心成员. 问题 某日,研发的小伙伴扔过来一个SQL希望帮忙优化. select n ...

  4. php 本地mysql 代码_基于本地数据库的 IP 地址查询 PHP 源码

    * 纯真 IP 数据库查询 * * 参考资料: * - 纯真 IP 数据库 http://www.cz88.net/ip/ * - PHP 读取纯真IP地址数据库 http://ju.outofmem ...

  5. 基于Python查询某个ip是否属于某个或多个ip段

    1.查询某个ip段包含的ip和ip个数 import IPyips = IPy.IP('192.168.1.0/24') #打印IP段内ip数量 print(len(ips)) #打印ip段内所以ip ...

  6. 3.网络安全渗透测试—[信息收集篇3]—[whois查询和反查/IP查询和反查/C段查询/资产相关]

    一.whois查询和反查 1.whois信息查询:域名->注册人和注册邮箱 (1)概念: whois反查要先涉及到一个概念就是whois,whois简单来说,就是一个用来查询域名是否已经被注册, ...

  7. mysql设置hostname多个ip段_PHPMyadmin 配置多个网段

    PHPMyadmin配置文件config.inc.php内容如下,在需要设置的地方增加了相关注释. 非常适合对数据库操作命令不熟悉的数据库管理者,下面我就说下怎么安装该工具: 1.先到网上下载phpm ...

  8. 子域名爆破C段查询调用Bing查询同IP网站

    在线子域名爆破 1 <?php 2 3 function domainfuzz($domain) { 4 $ip = gethostbyname($domain); 5 preg_match(& ...

  9. 配置MySQL单个用户多个IP段白名单

    配置多个IP段白名单 用户为testuser,配置100.%.%.%,192.%.%.%,127.%.%.%三个ip段可访问. 因为数据库通过了本地nginx使用127.0.0.1:3306做过反向代 ...

  10. mysql 空闲几分钟速度变慢,MYSQL 运作一小段时间后,速度变得奇慢。而CPU基本空闲状态...

    当前位置:我的异常网» MySQL » MYSQL 运作一小段时间后,速度变得奇慢.而CPU基本 MYSQL 运作一小段时间后,速度变得奇慢.而CPU基本空闲状态 www.myexceptions.n ...

最新文章

  1. MAC: Homebrew(代替yum)安装
  2. python界面颜色-给Python点颜色——青少年学编程
  3. 【OpenCV入门指南】第五篇 轮廓检测 上
  4. 游戏行业全场景数字化解决方案全面上线,速来围观
  5. 阿里大数据分析与应用(part3)--常用的大数据分析平台
  6. 不要被约束的意思_俗话说:“娶妻不娶颧骨高,嫁汉不嫁连眉梢”,到底什么意思?...
  7. 添加图标_win10系统轻松添加显示桌面图标的操作方法
  8. Pydiction : VIM上的PYTHON代码自动补全插件
  9. 【java线程系列】java线程系列之java线程池详解
  10. 获取某一天的开始时间
  11. 2018厦门大学计算机技术分数线,2018厦门大学专业排名及分数线 王牌专业有哪些...
  12. 2014大众点评Hackathon参赛感想
  13. 调侃python的段子_杠精的段子 讽刺调侃杠精的说说句子
  14. jquery input标签中 中checkbox全部选中与全部取消
  15. BM33-二叉树的镜像
  16. PCB布局和绘制的关键操作
  17. python自学笔记+一个汇率计算PyQt实例
  18. linux程序间管道通信,linux进程间通信——管道 详解
  19. SpringbootHealth访问健康监测时报404问题
  20. 让我差点中计的电话诈骗套路!|凹凸日常

热门文章

  1. VINS-Mono 代码解析六、边缘化(3)
  2. [预推免]——中科院计算所
  3. docker的容器间通信
  4. 视频会议让教育培训插上腾飞的翅膀!
  5. 校验、加密、压缩、哈希值的区别,我老是弄混,现在总结一下
  6. Python 实现Jaccard相似度计算,判断英文新闻标题相似度
  7. c语言模拟开关题目,8x16 模拟开关阵列芯片 CH446Q.PDF
  8. 存根类 Stub详解
  9. 在VS code中运行matlab
  10. PS 导入笔刷和导入字体和导入滤镜