MySQL怎样存储IP地址
为什么要问如何存储IP
首先就来阐明一下部分人得反问:为什么要问IP得怎样存,直接varchar类型不就得了吗?
其实做任何程序设计都要在功能实现的基础上最大限度的优化性能。而数据库设计是程序设计中不可忽略的一个重要部分,所以巧存IP地址可以一定程度获得很大提升。
利用函数算法处理
在MySQL中没有直接提供IP类型字段,但如果有两个函数可以把IP与最大长度为10位数字类型互转,所以使用int类型存储IP比varchar类型存储IP地址性能要提升很多,减少不少空间。因为varchar是可变长形,需要多余的一个字节存储长度。另外int型在逻辑运算上要比varchar速度快。
IP转数字函数inet_aton()
我们转换下几个常用的IP地址
01
|
mysql> select inet_aton( '255.255.255.255' );
|
02
|
+------------------------------+
|
03
|
| inet_aton( '255.255.255.255' ) |
|
04
|
+------------------------------+
|
05
|
| 4294967295 |
|
06
|
+------------------------------+
|
07
|
1 row in set (0.00 sec)
|
08
|
09
|
mysql> select inet_aton( '192.168.1.1' );
|
10
|
+--------------------------+
|
11
|
| inet_aton( '192.168.1.1' ) |
|
12
|
+--------------------------+
|
13
|
| 3232235777 |
|
14
|
+--------------------------+
|
15
|
1 row in set (0.00 sec)
|
16
|
17
|
mysql> select inet_aton( '10.10.10.10' );
|
18
|
+--------------------------+
|
19
|
| inet_aton( '10.10.10.10' ) |
|
20
|
+--------------------------+
|
21
|
| 168430090 |
|
22
|
+--------------------------+
|
23
|
1 row in set (0.00 sec)
|
所以IP的表字段可以设置为INT(10)就好,如果IP获取不到可以直接存0代表获取不到IP的意思
数字转IP函数inet_ntoa()
01
|
mysql> select inet_ntoa(4294967295);
|
02
|
+-----------------------+
|
03
|
| inet_ntoa(4294967295) |
|
04
|
+-----------------------+
|
05
|
| 255.255.255.255 |
|
06
|
+-----------------------+
|
07
|
1 row in set (0.00 sec)
|
08
|
09
|
mysql> select inet_ntoa(3232235777);
|
10
|
+-----------------------+
|
11
|
| inet_ntoa(3232235777) |
|
12
|
+-----------------------+
|
13
|
| 192.168.1.1 |
|
14
|
+-----------------------+
|
15
|
1 row in set (0.00 sec)
|
16
|
17
|
mysql> select inet_ntoa(168430090);
|
18
|
+----------------------+
|
19
|
| inet_ntoa(168430090) |
|
20
|
+----------------------+
|
21
|
| 10.10.10.10 |
|
22
|
+----------------------+
|
23
|
1 row in set (0.00 sec)
|
24
|
25
|
mysql> select inet_ntoa(0);
|
26
|
+--------------+
|
27
|
| inet_ntoa(0) |
|
28
|
+--------------+
|
29
|
| 0.0.0.0 |
|
30
|
+--------------+
|
31
|
1 row in set (0.00 sec)
|
注意,0转换为 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次方。
MySQL怎样存储IP地址相关推荐
- Mysql数据库存储ip地址
很多时候我们数据库存储ip地址都是以字符串的形式的,毕竟那个ip地址点来点去的,其他类型都无法存储了,今天带来一个小知识,mysql中的inet_aton使用 从上图可以看到,使用这个函数可以把ip地 ...
- mysql中存储ip地址,将ip转换为整数存储
mysql中将ip转换为整数存储,可以节省空间和提高性能,但是不利于阅读.<msql高性能>中推荐将ip地址转换为整数,用一个无符号的32位的整数存储. select INET_ATON( ...
- mysql数据库ip地址_MySQL数据库存储IP地址的方法
为什么要问如何存储IP? 首先就来阐明一下部分人得反问:为什么要问IP得怎样存,直接varchar类型不就得了吗? 其实做任何程序设计都要在功能实现的基础上最大限度的优化性能.而数据库设计是程序设计中 ...
- MySQL如何有效的存储IP地址
文章目录 序言 工具类实现转换 数据库函数实现转换 一.IP地址应该怎么存 二.整数存储 IP 地址的查询性能实验 1.测试范围查询: 2.IP精确查询: 3.整理一下结果发现: 总结 首先就来阐明一 ...
- mysql存储ip地址_MySQL怎样存储IP地址
为什么要问如何存储IP 首先就来阐明一下部分人得反问:为什么要问IP得怎样存,直接varchar类型不就得了吗? 其实做任何程序设计都要在功能实现的基础上最大限度的优化性能.而数据库设计是程序设计中不 ...
- 【mysql】MySQL存储IP地址
为什么要问如何存储IP 首先就来阐明一下部分人得反问:为什么要问IP得怎样存,直接varchar类型不就得了吗? 其实做任何程序设计都要在功能实现的基础上最大限度的优化性能.而数据库设计是程序设计中不 ...
- MySql存储IP地址(兼容ipv4和ipv6)
MySql存储IP地址(兼容ipv4和ipv6) 最近项目涉及到IP白名单的问题,需要设计表来存储IP地址,网上的方法针对IPV4和IPV6用什么类型存储也没有个统一的答案(都是抄来抄去....) 1 ...
- MySQL 存储 IP 地址
在 MySQL 中,如果是以字符串的形式存储 IP 地址,在正常格式下,最小长度为 7 个字符 (0.0.0.0),最大长度为 15 个 (255.255.255.255),我们通常会使用 varch ...
- 存储IP地址,到底用什么数据类型相对比较好
一. 介绍 在平常开发当中,肯定遇到过需要存储IP地址的场景,比如登录.访问.操作日志记录,方便起见直接使用字符串类型存储也不是不可以,但是在<高性能MySQL>中,建议存储IPv4地址时 ...
最新文章
- MIT发布白皮书:美国欲重返世界半导体霸主!
- C程序设计的抽象思维-递归过程-砝码称重
- Spring Boot+Docker微服务分布式服务架构设计和部署案例
- linux下c md5函数
- Python的__str__()方法
- vscode如何找letax模板_一直努力却找不到变美思路?韩国新一代「整容模板」,教你如何提高美商、科学变美!...
- 使用保险丝结构管理MQ和ESB的大型部署,第I部分
- Addition Chains(信息学奥赛一本通-T1443)
- python 日志 logging模块(详细解析)
- 对抗神经网络(python-一维数据)
- java事务_Java 事务详解
- 老人拿家谱自称傅友德后代,学者:朱元璋诛九族却放过了六岁小孩
- 大小写字母格式(26个大小写字母格式表)
- Invalid configuration object. Webpack hch the API schema. - configuration has an unknown property
- QT - 图像处理 ( 1 ) - QImage像素级操作 - (转灰度、亮度、暖色、冷色、饱和度、模糊、锐化、金属效果 )
- SpringBoot整合使用XXL-JOB
- vue项目中实现价格被横线划掉,折扣价效果
- 基于51单片机的智能花盆测控(温湿度、光照)【仿真资料-126】
- 仰望流年纯白世界那抹城光(二)
- dubbo核心源码流程分析
热门文章
- 织梦响应式鲜花绿植花艺类网站模板(自适应手机端)
- 围观 Joomla, Wordpress 和 Drupal
- magento 获取 pages/Static Block 内容 Get Pages/Static Block in Magento
- iOS中XML解析 (二) libxml2(实例:打印xml内容及存储到数组)
- Flex 中 12 个简单实用的小技巧
- K均值聚类关于初始聚类中心的探讨
- 搜索——素数环(hdu1016)
- zabbix3.4.4 监控系统安装部署
- 【今日CS 视觉论文速览】Fri, 1 Feb 2019
- 【C++面向对象】类的大小以及虚继承