做了查詢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型.