mysql用18位存储uuid_Mysql 存储 UUID
参考:
通常用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相关推荐
- mysql获取18位和15位身份证号中的出生日期、年龄
18位身份证号码 select cast(substring(idno,7,8) as date) as 出生日期,2022-substring(idno,7,4) as age from table ...
- mysql用18位存储uuid_MySQL中存储UUID的最佳实践
在MySQL中有一个UUID () 函数,通常用UUID做唯一标识,需要在数据库中进行存储.使用此函数可以让MySQL生成一个UUID值,并以VARCHAR(36)类型的可读形式返回.如图1: 图1 ...
- mysql生成18位纯数字id_MySQL实现注册时随机生成数字id,类似于注册qq时随机生成qq号...
首先根据长度需求通过java的随机函数java.util.Random生成随机数,如希望得到5位随机id,则可以使用如下语句 int r = (new Random()).nextInt()%8999 ...
- mysql存储base64位用什么类型_【漫画】面试现场:为什么MySQL数据库要用B+树存储索引?...
推荐阅读:MySQL最全整理(面试题+笔记+导图),面试大厂不再被MySql难倒! 小史是一个应届生,虽然学的是电子专业,但是自己业余时间看了很多互联网与编程方面的书,一心想进BAT互联网公司. 话说 ...
- MongoDB中关于64位整型存储解决方案
为什么80%的码农都做不了架构师?>>> 社区内一哥们@smcboy 提出关于php中操作MongoDB存储整数问题,找到点资料花点时间翻译过来,是个很好的学习方式.@红薯 那 ...
- MySQL百万级/千万级数据存储解决方案
MySQL 百万级/千万级数据存储解决方案 百万级.千万级数据处理,个人认为核心关键在于数据存储方案设计,存储方案设计的是否合理,直接影响到数据CRUD操作.总体设计可以考虑一下三个方面进行设计考虑: ...
- MySQL(六)——存储过程和存储函数
前言 今天简单的介绍一下"存储函数"和"存储过程",平时在工作中用到的时间不多,时间长了难免会忘记.在这里简单的做个回忆总结,方便自己以后复习回忆,当然能帮到需 ...
- MySql技术内 幕:InnoDB存储引擎 读书笔记
书名 <MySql技术内幕:InnoDB存储引擎> 作者 姜承尧 书摘 第一章:MySQL体系结构和存储引擎 定义数据库和实例: 定义数据库和实例 数据库:文件的集合,frm.MYD.MY ...
- Mysql原理解析 - 索引文件的存储结构
Mysql原理解析 - 索引文件的存储结构 前言 局部性原理 磁盘预读 索引是什么? 1. MSQL为什么索引选择B+树? 1.1 哈希表hash 简介: 局限性: 1.2 二叉树 简介: 局限性: ...
最新文章
- 解决MyBatis中 Could not set property ~ o f ~异常
- 关于P2P流量的识别方式
- svm 彻底的过程
- python中frame中的元素怎么识别_python3.6+selenium实现操作Frame中的页面元素
- 51nod1258 序列求和 V4(伯努利数+多项式求逆)
- boost::log::visitation_result用法的测试程序
- leetcode 236. Lowest Common Ancestor of a Binary Tree | 236. 二叉树的最近公共祖先(Java)
- keil编译运行错误,缺少error:#5:#includecore_cm3.h_过路老熊_新浪博客
- python录制生成自动化脚本_懒人做自动化测试之二--自动化脚本录制
- Linux内核等待队列wait_queue学习
- VS如何安装.nupkg文件
- Mac 软件汉化教程(一)
- java shiro教程_shiro教程1(HelloWorld)
- 深入分析AIL语言及init.rc文件
- js插件---弹出层sweetalert2
- win10 輸入法怎麽切換繁體
- 服务器安装内置无线网卡,笔记本怎么安装内置网卡 笔记本内置无线网卡安装步骤【图文】...
- 分布式处理数据:client
- python最快多久学会,python学成需要多久
- vue 项目中使用three.js实现vr360度全景图片预览
热门文章
- 介绍几本COM的书籍
- 【WY】数据分析 — 关系网络阶段一 :进阶语法 一 —— 关系网络图
- Hive sql 中 order by、sort by、distribute by、cluster by用法
- google 浏览器出现 ERR_PROXY_CONNECTION_FAILED 无法访问网络
- Vue.js 面试题大全
- C语言程序设计--火车订票系统
- layaair引擎做的一个三消游戏
- centos7 磁盘空间不足扩容操作
- DTS音频编解码器图示
- 舞伴配对问题c语言实训报告,C语言数据结构队列实现舞伴匹配(数据结构第二次实验)...