使用mysql查詢純真IP庫的方法

 

爲了把點格式的ip地址轉換成整數表示的ip地址,創建如下MYSQL函數:

create function ip_calc(ip varchar(20)) returns bigint(20)

return

substring_index(ip,'.',1)*256*256*256

+substring_index(substring_index(ip,'.',2),'.',-1)*256*256

+ substring_index(substring_index(ip,'.',-2),'.',1)*256

+substring_index(ip,'.',-1);

 

作用是:

點格式的ip地主:115.46.155.242

整數形式的ip地址:1932434418

計算方法:115*256*256*256+46*256*256+155*256+242=1932434418

sql語句:select ip_calc('115.46.155.242');


在MySql中定位的方式爲:

select * from data_ip where

ipstart <=ip_calc('115.46.155.242')

and

ipend >= ip_calc('115.46.155.242');


查詢結果:

ipstart    ipend  ip_area

1932427264 1932460031       廣西網通


不過查詢效率真是太低了,很慢。

 


 

發佈了24 篇原創文章 · 獲贊 0 · 訪問量 6375
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章