大量IP数据比对,用什么方法效率高呢?

mayq0422 mayq0422 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
主要是要比对拿到的IP数据之间,比如国家,经纬度之类的信息是否一致,不一样则取多数为正确值。

有的数据是这样记录的:

第一个文件:
startIpNum endIpNum locId
16777216 16777471 17
第二个文件:
locId country region city postalCode latitude longitude metroCode areaCode
1 O1 0 0
2 AP 35 105
这样

有的是
IPNUM city latitude longitude
23986432 Milano 45.45 9.16667
16843008 Sexau 48.1 7.9167
26778880 Marseille 43.3 5.4
33523968 Milan 45.45 9.16667
这样

即有按段的也有按单个IP的。
我把它们都导入到了SQL SERVER里,然后
SELECT A.startIpNum,A.endIpNum,B.startIpNum,B.endIpNum,A.country,B.country
FROM A INNER JOIN a ON A.locId=a.locId,IPligence
WHERE B.startIpNum>=A.startIpNum
AND B.endIpNum<=A.endIpNum
AND a.country != B.country;

(因为A数据有两部分,一部分是IP段,另一部分是实际地理数据,所以又用到了a即地理数据)
也就是单就A的段包含B的情况,判断国家不一样的拿出来,然后跑了蛮久没结果。

数据库是我这个学期才学的,有学长建议我直接用语言文本处理的方式比对,灵活、效率可控。但是我觉得这么大量的数据应该可以用数据库吧?
只是简单的这么写查询语句似乎不太实际,是否有优化方法呢?
其实IP都是从小到大的,比对不需要从都到尾都找一遍。但是我不知道怎么写。用程序语言文本处理我也想不太明白怎么写比较可行。

...全文

相关推荐

Python从数据库读取大量数据批量写入文件的方法

今天小编就为大家分享一篇Python从数据库读取大量数据批量写入文件的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

weixin_38614636

超牛IP地址数据库,用了nosql,效率高于十倍关系型数据库

PHP写的一个查询IP所在地的程序,适合大型网站流量统计,效率高于十倍关系型数据库,纯nosql技术,里面还有QQ纯真IP数据库的demo,然后两种方式的nosql和QQ纯真IP数据库的demo之间校量,对比运行效率!当然是这个最快了

anlunet

Java判断IP地址为内网IP还是公网IP的方法

主要介绍了Java判断IP地址为内网IP还是公网IP的方法,针对tcp/ip协议中保留的三个私有地址进行判断分析,是比较实用的技巧,需要的朋友可以参考下

weixin_38502915

获取主机网卡IP,在线设备IP,以及和预定的IP比对

利用Python做的检测工业上检测局域网IP的工具,能获取主机网卡IP,在线设备IP,以及判断预设的IP是否在扫描出的在线IP里,在的话显示正常,不在的话显示异常,里面包含源码,可以更改。

吃西瓜的猪

用C#语言在VS2005中获取客户端ip,并和ip标准库进行比对

用C#语言在VS2005中获取客户端ip,并和ip标准库进行比对,判断用户选择的ip是否正确。有所有源码和数据库文件。自己从不懂,到懂,然后做出来!

bluehuanhuan
评论 9
收藏 已收藏
分享
返回顶部
mayq0422
疑难问题 22,298 成员 121,727 内容