1. 程式人生 > >如何查詢到ip地址在mysql的網段呢?

如何查詢到ip地址在mysql的網段呢?

買的資料庫,地址是字串格式

如何查詢一個確定的ip在哪裡呢?

直接通過字串查詢估計要慢死了

可以先把自己的要查詢的ip轉換為數字,然後再去以數字的方式查詢

IP轉數字1.2.6.0轉為數字

SELECT INET_ATON('1.2.6.0');

插一句,數字轉ip 

SELECT INET_NTOA(16909824);

 

 整型欄位的比較比字串效率高很多,這也符合一項優化原則:欄位型別定義使用最合適(最小),最簡單的資料型別。
inet_aton()演算法,其實借用了國際上對各國IP地址的區分中使用的ip number。
a.b.c.d 的ip number是:
a * 256的3次方 + b * 256的2次方 + c * 256的1次方 + d * 256的0次方。

這一點有點像hex轉10進位制的位權的概念

然後用between and查詢就行了,但是速度好像比較慢啊

SELECT * FROM t_ip WHERE 16909825 BETWEEN ip_start_num AND ip_end_num;

 

不知道有什麼好辦法解決