做了查询IP所属地的程序,将过程记录如下:
1, 建立数据库
得到的是一个.dat文件,通过IPLook工具转换成了.txt格式的,然后导入了Access中,最后导入到MS SQLSERVER中.
IP数据库有三个字段,
startIP:decimal(18,0)
endIP:decimal(18,0)
address:char(50)
2, 建立一个和IP地址一一映射的数字.
例如IP为59.69.74.47,计算的算法为59*256*256*256+69*256*256+74*256+47
具体理论的证明略去.
3, 查询语句
select address from IPStore where startIP <= IPCount and endIP >= IPCount
4, 效率低的原因
没有设置主键,或索引.这是提高效率的重要手段.
另外,把很大的数据表做横向分割,也是很有效的提高效率的手段.
5, 注意的问题
IP对应的数字是很大的,Int型是不够长的.所以在程序中要用long型,在数据库中用decimal型.