MySQL有關ip地址的優化存儲

爲何要優化ip地址的存儲?mysql

不少時候,咱們在操做mysql時,併爲過度關心如何優化mysql的存儲內容,提升訪問速度,可是作任何程序設計都要在功能實現的基礎上最大限度的優化性能。而數據庫設計是程序設計中不可忽略的一個重要部分,合理的使用必定的優化方式,證實你擺脫了入門級新手的稱號。算法

在MySQL中沒有直接提供IP類型字段,但提供有兩個函數能夠把IP與最大長度爲10位數字類型互轉,因此使用int類型存儲IP比varchar類型存儲IP地址性能要提高不少,減小很多空間。由於varchar是可變長形,須要多餘的一個字節存儲長度。另外int型在邏輯運算上要比varchar速度快。sql

IP轉數字函數inet_aton()

數字轉IP函數inet_ntoa()

IP的表字段能夠設置爲INT(10)就好,若是IP獲取不到能夠直接存0表明獲取不到IP的意思 ,數據庫

0轉換ip表明0.0.0.0數據庫設計

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

相關文章
相關標籤/搜索