博客
关于我
MySQL中为什么IP地址最好使用int类型?
阅读量:343 次
发布时间:2019-03-04

本文共 751 字,大约阅读时间需要 2 分钟。

不仅节省了存储空间,对比较也是比较快的,毕竟对整型和对15个长的字符比较差别还是很大的,首先需要介绍两个函数:INET_ATON() 将IP转为十进制数字, INET_NTOA()将数字转换为IP。

先来看IP的结构, 127.0.0.1(01111111 00000000 00000000 00000001) ,学计算机的对2的N次方比较敏感,一看就猜到是由 4个8位的二进制数字组成, 对, 就是这样!也就是说IP转换成二进制可以这样:

SELECT	concat(		bin(127),		lpad(bin(0), 8, 0),		lpad(bin(0), 8, 0),		lpad(bin(1), 8, 0)	)

把每一位的前边补0, 然后拼接起来,得到这样的结果: 1111111000000000000000000000001

系统的INET_ATON()函数也是这么算的,不信可以对比一下结果:

SELECT	bin(inet_aton('127.0.0.1'));

得到的结果也是这样: 1111111000000000000000000000001

所以得出结论: INET_ATON() 就是把IP的每一段转为二进制拼接起来,然后将这个32位的二进制数字转为10进制
示例:

SELECT	INET_NTOA(2130706433);

在这里插入图片描述

为什么这么存储呢?

有人说节省空间, 也对, 不过比较蛋疼, 现在的硬盘那么便宜在乎这点空间?
更为合理的解释是, 方便查询, 比如要查某一网段的所有IP就可以 :

SELECT	*FROM	TABLEWHERE	ip BETWEEN inet_aton('192.168.0.1')AND inet_aton('192.168.0.255')

转载地址:http://gfse.baihongyu.com/

你可能感兴趣的文章
MySQL(2)DDL详解
查看>>
MySQL(3)DML详解
查看>>
MySQL(4)运算符 | 关联查询详解
查看>>
MySQL(5)条件查询 | 单行函数 | 事务详解
查看>>
Mysql,group by分组查询、order by排序查询、join连接查询、union联合查询
查看>>
Mysql,sql文件导入和导出
查看>>
MYSQL:int类型升级到bigint,对PHP开发语言影响
查看>>
Mysql:mysql 5.X 报错 ERROR 1193 (HY000): Unknown system variable ‘validate_password_length‘
查看>>
MySQL:MySQL执行一条SQL查询语句的执行过程
查看>>
Mysql:SQL性能分析
查看>>
mysql:SQL按时间查询方法总结
查看>>
MySQL:什么样的字段适合加索引?什么样的字段不适合加索引
查看>>
MySQL:判断逗号分隔的字符串中是否包含某个字符串
查看>>
MySQL:某个ip连接mysql失败次数过多,导致ip锁定
查看>>
MySQL:索引失效场景总结
查看>>
Mysql:避免重复的插入数据方法汇总
查看>>
MyS中的IF
查看>>
M_Map工具箱简介及地理图形绘制
查看>>
m_Orchestrate learning system---二十二、html代码如何变的容易
查看>>
M×N 形状 numpy.ndarray 的滑动窗口
查看>>