标签分类
技术文章
当前位置:主页 > 计算机编程 > mysql > Mysql中存储UUID去除横线的方法

详解Mysql中存储UUID如何去除横线

  • 发布时间:
  • 作者:码农之家原创
  • 点击:200

Mysql中存储UUID去除横线的方法

这篇文章主要知识点是关于Mysql,存储,UUID,横线,Mysql中存储UUID去除横线的方法,的内容,如果大家想对相关知识点有系统深入的学习,可以参阅以下电子书

PHP+MySQL动态网站开发从入门到精通
  • 类型:PHP网站开发大小:36.2 MB格式:PDF出版:清华大学出版社作者:张工厂
立即下载
MySQL与MariaDB学习指南
  • 类型:数据库大小:68.9 MB格式:PDF出版:人民邮电出版社作者:罗素 戴尔
立即下载

更多相关的学习资源可以参阅 程序设计电子书数据库电子书数据库视频、等栏目。

参考:

http://stackoverflow.com/questions/412341/how-should-i-store-guid-in-mysql-tables

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

UUID的格式


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)列中。

 


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

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

 

以上就是本次给大家分享的全部知识点内容总结,大家还可以在下方相关文章里找到儿童python编程入门书籍推、 解决axios.interceptors.respon、 spring+springmvc+mybatis整合注、 等mysql文章进一步学习,感谢大家的阅读和支持。

上一篇:MySQL用户和权限及破解root口令的方法

下一篇:备份MySQL数据库的实例方法

展开 +

收起 -

学习笔记
网友NO.555328

基于ThinkPHP5框架使用QueryList爬取并存入mysql数据库操作示例

本文实例讲述了基于ThinkPHP5框架使用QueryList爬取并存入mysql数据库操作。分享给大家供大家参考,具体如下: QueryList4教程 地址: https://doc.querylist.cc/site/index/doc/45 在ThinkPHP5代码根目录执行composer命令安装QueryList: composer require jaeger/querylist 如果出现 以下错误 Loading composer repositories with package information Updating dependencies (including require-dev) Authentication required (packagist.phpcomposer.com): Username: 出现这样的 情况 使用 composer config -g repo.packagist composer https://packagist.laravel-china.org 下面演示在Index控制器中使用QueryList: use QL\QueryList;public function qulist(){ $data = QueryList::get('http://maoyan.com/board/4') // 设置采集规则 -rules([ // 爬取图片地址 "src"=array(".board-wrapper dd img.board-img","data-src"), // 爬取电影名 "name"=array(".board-wrapper dd .movie-item-info .name","html"), // 爬取电影主演信息 "star"=array(".board-wrapper dd .movie-item-info .star","html"), // 爬取上映时间 "releasetime"=array(".board-wrapper dd .movie-item-info .releasetime","html"), ]) -query()-getData(); $excel_array=$data-all(); var_dump($excel_array);exit;} 如果没有错的 则 如果想继续抓取下一页的数据 要根据规律来去 这里我继续抓取20页 但是没有那么多就抓取了10页的数据 public function qulist(){ for($i=0;$i20;$i++){ $page=$i*10; $data = QueryList::get('http://maoyan.com/board/4?offset……

网友NO.932131

Windows平台下MySQL安装与配置方法与注意事项

2.1、msi安装包 2.1.1、安装 特别要注意的是,安装前要删除原来的my.ini和原来的data目录,改名也行,不然在最后一步会“apply security settings”报个1045错误,原因1,防火墙,原因2,数据文件未清除。 一路next,选custom安装 可以指定data的位置,不要指定到系统盘 顺便配置,选择"detailed configuration" 服务器类型和用途视开发还是生产环境 "bestsupport for multilingualism" 支持大部分语系,默认字符集是UTF-8,用这个吧 "addfirewall exception for this port" 最好选上,尤其在开发机 "enabledstrict mode" 生产机推荐,开发机可以不用,选的话,容易出现刚开始要求注意的问题 "includebin directory in windows path" 强烈建议选上,不然要手动配置path路径 "createanonymous account" 就不要了 没有意外的话,成功搞定 安装后root登录不了的解决办法 mysql -h localhost -u root -p cmd net stop mysql mysqld --skip-grant-tables #注意,netstart mysql --skip-grant-tables,能启动,但是好象达不到效果 窗口可能死掉,不管,另开一个窗口 cmd mysql-u root 发现直接进去了 use mysql update user set password=password("新密码") where user='root' and host='localhost'; flush previliges; OK了,注意几点: 1、net start mysql --skip-grant-tables,能启动,但是好象达不到效果 2、mysql是内置的数据库 3、user表是mysql库里存储用户名密码和权限的表 4、……

网友NO.579251

mysql导出查询结果到csv的实现方法

要将mysql的查询结果导出为 csv ,一般会使用php连接mysql执行查询,将返回的查询结果使用php生成csv格式再导出。 但这样比较麻烦,需要服务器安装 php 才可以实现。 直接使用mysql导出csv方法 我们可以使用 into outfile, fields terminated by, optionally enclosed by, line terminated by 语句实现导出csv 语句的格式与作用 into outfile ‘导出的目录和文件名' 指定导出的目录和文件名 fields terminated by ‘字段间分隔符' 定义字段间的分隔符 optionally enclosed by ‘字段包围符' 定义包围字段的字符(数值型字段无效) lines terminated by ‘行间分隔符' 定义每行的分隔符 例子: mysql -u rootuse test;select * from table into outfile '/tmp/table.csv' fields terminated by ',' optionally enclosed by '"' lines terminated by '\r\n'; 执行后,会把talbe中记录数据导出到/tmp/table.csv文件中。每个字段以,分隔,字段内容是字符串的以”包围,每条记录使用\r\n换行。 以上这篇mysql导出查询结果到csv的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持码农之家。 ……

网友NO.254495

mysql5.7.18.zip免安装版本配置教程(windows)

这是我之前进行mysql5.7.18.zip的安装教程,先分享给大家。 MySQL 的官网下载地址:http://www.mysql.com/downloads/ 在这个下载界面会有几个版本的选择。 1. MySQL Community Server 社区版本,开源免费,但不提供官方技术支持。 2. MySQL Enterprise Edition 企业版本,需付费,可以试用30天。 3. MySQL Cluster 集群版,开源免费。可将几个MySQL Server封装成一个Server。 4. MySQL Cluster CGE 高级集群版,需付费。 5. MySQL Workbench(GUI TOOL)一款专为MySQL设计的ER/数据库建模工具。它是著名的数据库设计工具DBDesigner4的继任者。MySQL Workbench又分为两个版本,分别是社区版(MySQL Workbench OSS)、商用版(MySQL Workbench SE)。 MySQL Community Server 是开源免费的,这也是我们通常用的MySQL的版本。根据不同的操作系统平台细分为多个版本,下面我们以windows平台为例来说明。 选择32位/64位开始下载 下载完后,选择地址解压压缩包,我解压的位置为:D:\Program Files\mysql-5.7.18-winx64 最重要的命令: mysqld --initialize-insecure --user=mysql 在文件夹下新建一个my.ini配置文件,内容编辑为: [mysqld] # 设置mysql的安装目录 basedir=D:\Program Files\mysql-5.7.18-winx64 # 设置mysql数据库的数据的存放目录 datadir=D:\Program Files\mysql-5.7.18-winx64\data 在目录下新建一个data文件夹,有data文件夹的清空文件夹 在C:\Windows\Sy……

<
1
>

Copyright 2018-2019 xz577.com 码农之家

版权责任说明