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次方。函数

相关文章
相关标签/搜索