1、MD5在MySQL数据库中的存储

  用CHAR(32)来存储MD5值是一个常见的技巧。如果你的应用程序使用VARCHAR(32),则对每个值得字符串长度都需要花费额外的不 必要的开销。这个十六进制的值可以使用UNHEX()和HEX()函数来存储在BINARY(16)在BINARY(16)数据类型的中且更为高效。用这 种转换可以让每行占用的存储空间从32字节减少到16字节。

  下面的示例展示了原始MD5以及压缩后的MD5占用的空间对比:

  这个原则也适用其他16进制的值,例如为所有列的散列值而定义的索引时。

2、IP地址在MySQL中的存储

  一个IP地址应该定义为INT UNSIGNED数据类型,只占用4字节。

  通常情况下将列定义为VARCHAR(15),这样平均要占用12字节。这样平均要占用12个字节。

  这样一个改进就可以节约2/3的列数据占用的空间。INET_ATON()和INET_NTOA()函数可以管理IP在字符串和数字值之间的转换。

  请看下面的示例:

  

  这个技术是适合于ipv4。随着ipv6的广泛使用,一定要将这些128bit的整数值以binary(16)的类型存储,而不是用varchar数据类型那种人们可以阅读的方式。

来源文献:《EffectIve MySQL 之SQL语句最优化》李雪峰译。

最新文章

  1. Spring+SpringMvc+Mybatis框架集成搭建教程一(项目创建)
  2. PHP入门【一】$_SERVER
  3. 仪表盘 hostmap 新玩法让运维工作越玩越 high
  4. 漫谈 polling 和 Websocket
  5. IL指令集(转)
  6. Ubuntu You don't have permission to access解决方案!
  7. Egret 矢量绘图、遮罩、碰撞检测
  8. IE6-BUG-CSS兼容详解
  9. vs2015体验
  10. 【前端童鞋看过来!】给大家分享网盘里前端相关书籍,主要是和网络通信(HTTP/TCP/IP)及javascript相关的
  11. lvs与nginx区别
  12. 定时任务调度工作(学习记录 四)schedule与scheduleAtFixedRate的区别
  13. Python全栈-magedu-2018-笔记10
  14. 支付宝 ILLEGAL_SIGN
  15. ShellExecuteEX打开iqy文件导致excel hang的原因分析
  16. python+unittest+requests+HTMLRunner编写接口自动化测试集
  17. NGINX 安装于配置
  18. CF1131D tarjan,拓扑
  19. 安卓手机H5底部fix定位,呼出键盘底部会上浮解决办法
  20. play framework系列之maven 构建

热门文章

  1. Android 四大组件学习之Service六
  2. [Android]生成heap dump文件(.hprof)
  3. hdu2588 GCD 给定n,m。求x属于[1,n]。有多少个x满足gcd(x,n)>=m; 容斥或者欧拉函数
  4. Elasticsearch5.X IN Windows 10 系列文章(2)
  5. win7下怎么卸载jdk
  6. 集合Set映射一对多(使用xml文件)
  7. Spring MVC Hibernate验证器
  8. Package java.sql
  9. 《转》Ubuntu14.04 openstack juno配置之 ceilometer遥測模块安装配置
  10. 网页或WEB应用或PC端浏览器调用百度地图API