参考:

通常用UUID做唯一标识,需要在数据库中进行存储。

UUID的格式

[java]

String string = UUID.randomUUID().toString();

System.out.println(“uuid:” + string);

uuid:05ba463f-1dab-471f-81c7-58e0b06f35f0

数据库中直接存储UUID的坏处:

完全‘随机’的字符串,例如由MD5()、SHA1()、UUID()产生的。它们产生的每一个新值都会被任意地保存在很大的空间范围内,这会减慢INSERT及一些SELECT查询。1)它们会减慢INSERT查询,因为插入的值会被随机地放入索引中。这会导致分页、随机磁盘访问及聚集存储引擎上的聚集索引碎片。2)它们会减慢SELECT查询,因为逻辑上相邻的行会分布在磁盘和内存中的各个地方。3)随机值导致缓存对所有类型的查询性能都很差,因为它们会使缓存赖以工作的访问局部性失效。如果整个数据集都变得同样“热”的时候,那么把特定部分的数据缓存到内存中就没有任何的优势了。并且如果工作集不能被装入内存中,缓存就会进行很多刷写的工作,并且会导致很多缓存未命中。

如果保存UUID值,就应该移除其中的短横线,更好的办法是使用UHEX()把UUID值转化为16字节的数字,并把它保存在BINARY(16)列中。

[sql]

DELIMITER $$

CREATE FUNCTION `GuidToBinary`(

$Data VARCHAR(36)

) RETURNS binary(16)

BEGIN

DECLARE $Result BINARY(16) DEFAULT NULL;

IF $Data IS NOT NULL THEN

SET $Data = REPLACE($Data,’-',”);

SET $Result = CONCAT(UNHEX(SUBSTRING($Data,7,2)),UNHEX(SUBSTRING($Data,5,2)),UNHEX(SUBSTRING($Data,3,2)), UNHEX(SUBSTRING($Data,1,2)),

UNHEX(SUBSTRING($Data,11,2)),UNHEX(SUBSTRING($Data,9,2)),UNHEX(SUBSTRING($Data,15,2)) , UNHEX(SUBSTRING($Data,13,2)),

UNHEX(SUBSTRING($Data,17,16)));

END IF;

RETURN $Result;

END

$$

CREATE FUNCTION `ToGuid`(

$Data BINARY(16)

) RETURNS char(36) CHARSET utf8

BEGIN

DECLARE $Result CHAR(36) DEFAULT NULL;

IF $Data IS NOT NULL THEN

SET $Result = CONCAT(HEX(SUBSTRING($Data,4,1)),HEX(SUBSTRING($Data,3,1)),HEX(SUBSTRING($Data,2,1)), HEX(SUBSTRING($Data,1,1)) , ‘-’,

HEX(SUBSTRING($Data,6,1)),HEX(SUBSTRING($Data,5,1)),’-',

HEX(SUBSTRING($Data,8,1)) , HEX(SUBSTRING($Data,7,1)),’-',

HEX(SUBSTRING($Data,9,2)),’-',HEX(SUBSTRING($Data,11,6)));

END IF;

RETURN $Result;

END

[sql]

CREATE FUNCTION `UUIDTOBIN`() RETURNS binary(16)

BEGIN

DECLARE my_uuid char(36);

SET my_uuid = UUID();

RETURN CONCAT(UNHEX(LEFT(my_uuid,8)),UNHEX(MID(my_uuid,10,4)),UNHEX(MID(my_uuid,15,4)),UNHEX(MID(my_uuid,20,4)),UNHEX(RIGHT(my_uuid,12)));

END

CREATE FUNCTION `BINTOUUID`(UUID BINARY(16)) RETURNS char(36)

BEGIN

RETURN CONCAT(HEX(LEFT(uuid,4)),’-', HEX(MID(uuid,5,2)),’-', HEX(MID(uuid,7,2)),’-',HEX(MID(uuid,9,2)),’-',HEX(RIGHT(uuid,6)));

END

mysql用18位存储uuid_Mysql 存储 UUID相关推荐

  1. mysql获取18位和15位身份证号中的出生日期、年龄

    18位身份证号码 select cast(substring(idno,7,8) as date) as 出生日期,2022-substring(idno,7,4) as age from table ...

  2. mysql用18位存储uuid_MySQL中存储UUID的最佳实践

    在MySQL中有一个UUID () 函数,通常用UUID做唯一标识,需要在数据库中进行存储.使用此函数可以让MySQL生成一个UUID值,并以VARCHAR(36)类型的可读形式返回.如图1: 图1 ...

  3. mysql生成18位纯数字id_MySQL实现注册时随机生成数字id,类似于注册qq时随机生成qq号...

    首先根据长度需求通过java的随机函数java.util.Random生成随机数,如希望得到5位随机id,则可以使用如下语句 int r = (new Random()).nextInt()%8999 ...

  4. mysql存储base64位用什么类型_【漫画】面试现场:为什么MySQL数据库要用B+树存储索引?...

    推荐阅读:MySQL最全整理(面试题+笔记+导图),面试大厂不再被MySql难倒! 小史是一个应届生,虽然学的是电子专业,但是自己业余时间看了很多互联网与编程方面的书,一心想进BAT互联网公司. 话说 ...

  5. MongoDB中关于64位整型存储解决方案

    为什么80%的码农都做不了架构师?>>>    社区内一哥们@smcboy 提出关于php中操作MongoDB存储整数问题,找到点资料花点时间翻译过来,是个很好的学习方式.@红薯 那 ...

  6. MySQL百万级/千万级数据存储解决方案

    MySQL 百万级/千万级数据存储解决方案 百万级.千万级数据处理,个人认为核心关键在于数据存储方案设计,存储方案设计的是否合理,直接影响到数据CRUD操作.总体设计可以考虑一下三个方面进行设计考虑: ...

  7. MySQL(六)——存储过程和存储函数

    前言 今天简单的介绍一下"存储函数"和"存储过程",平时在工作中用到的时间不多,时间长了难免会忘记.在这里简单的做个回忆总结,方便自己以后复习回忆,当然能帮到需 ...

  8. MySql技术内 幕:InnoDB存储引擎 读书笔记

    书名 <MySql技术内幕:InnoDB存储引擎> 作者 姜承尧 书摘 第一章:MySQL体系结构和存储引擎 定义数据库和实例: 定义数据库和实例 数据库:文件的集合,frm.MYD.MY ...

  9. Mysql原理解析 - 索引文件的存储结构

    Mysql原理解析 - 索引文件的存储结构 前言 局部性原理 磁盘预读 索引是什么? 1. MSQL为什么索引选择B+树? 1.1 哈希表hash 简介: 局限性: 1.2 二叉树 简介: 局限性: ...

最新文章

  1. 解决MyBatis中 Could not set property ~ o f ~异常
  2. 关于P2P流量的识别方式
  3. svm 彻底的过程
  4. python中frame中的元素怎么识别_python3.6+selenium实现操作Frame中的页面元素
  5. 51nod1258 序列求和 V4(伯努利数+多项式求逆)
  6. boost::log::visitation_result用法的测试程序
  7. leetcode 236. Lowest Common Ancestor of a Binary Tree | 236. 二叉树的最近公共祖先(Java)
  8. keil编译运行错误,缺少error:#5:#includecore_cm3.h_过路老熊_新浪博客
  9. python录制生成自动化脚本_懒人做自动化测试之二--自动化脚本录制
  10. Linux内核等待队列wait_queue学习
  11. VS如何安装.nupkg文件
  12. Mac 软件汉化教程(一)
  13. java shiro教程_shiro教程1(HelloWorld)
  14. 深入分析AIL语言及init.rc文件
  15. js插件---弹出层sweetalert2
  16. win10 輸入法怎麽切換繁體
  17. 服务器安装内置无线网卡,笔记本怎么安装内置网卡 笔记本内置无线网卡安装步骤【图文】...
  18. 分布式处理数据:client
  19. python最快多久学会,python学成需要多久
  20. vue 项目中使用three.js实现vr360度全景图片预览

热门文章

  1. 介绍几本COM的书籍
  2. 【WY】数据分析 — 关系网络阶段一 :进阶语法 一 —— 关系网络图
  3. Hive sql 中 order by、sort by、distribute by、cluster by用法
  4. google 浏览器出现 ERR_PROXY_CONNECTION_FAILED 无法访问网络
  5. Vue.js 面试题大全
  6. C语言程序设计--火车订票系统
  7. layaair引擎做的一个三消游戏
  8. centos7 磁盘空间不足扩容操作
  9. DTS音频编解码器图示
  10. 舞伴配对问题c语言实训报告,C语言数据结构队列实现舞伴匹配(数据结构第二次实验)...