IP地址库 的处理方法 mysql版

IP地址库在网上很多 建议用关键字 珊瑚虫 去查找。

找到了这样的ip区间 对应着相应的地区--》导入表。



为了方便程序查找 而且效率要高 最好是把开始ip  结束ip 换算成整数形式。

传进来的ip也可以转化为整数


在开始结束的整数 字段上面加上索引后 大约44万 记录查找一行数据的时间

本机大约是0.02s 效率还是不错的。

并且建立表


CREATE TABLE `ip_address_pool` (
  `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '自增主键',
  `start_ip` varchar(20) NOT NULL COMMENT '起始ip',
  `end_ip` varchar(20) NOT NULL COMMENT '截止ip',
  `region_name` varchar(128) NOT NULL COMMENT '地区名',
  `company_name` varchar(128) NOT NULL COMMENT '备注',
  `start_ip_Decimal` bigint(10) DEFAULT NULL,
  `end_ip_Decimal` bigint(10) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `idx_start_ip_Decimal` (`start_ip_Decimal`),
  KEY `idx_end_ip_Decimal` (`end_ip_Decimal`)
) ENGINE=InnoDB AUTO_INCREMENT=436820 DEFAULT CHARSET=utf8 COMMENT='ip地址对应表';



函数:

-- ip 是传进来的ip地址  a.b.c.d

-- 远离是 a,b,c,d的值的区间是 0--255 正好可以把ip视为256进制的数字
 然后转化为10进制的整数 d*1+c*256+b*256*256+a*256*256*256


drop function if exists func_get_split_string;

create function `ip_calc`(ip varchar(15)) returns bigint(20)
begin
 declare rs bigint(20) default 0;
  set rs=substring_index(ip,'.',1)*256*256*256+substring_index(substring_index(ip,'.',2),'.',-1)*256*256+ substring_index(substring_index(ip,'.',3),'.',-1)*256+substring_index(ip,'.',-1);
 return rs;
 end
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值