这篇文章主要介绍MySQL中主键使用数字还是uuid会让查询更快,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!在实际开发中Mysql的主键不能重复,可能会采用主键自增,为了防止主键重复也可能会采取雪花算法之类的算法保
这篇文章主要介绍MySQL中主键使用数字还是uuid会让查询更快,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
在实际开发中Mysql的主键不能重复,可能会采用主键自增,为了防止主键重复也可能会采取雪花算法之类的算法保证,这两种主键保存的都是number类型 但是实际开发中可能会生成uuid作为主键那么疑问来了,到底哪种主键的效率高呢?
下面由测试来验证:
首先我们先创建一个表,用存储过程生成100w条数据然后分析:
创建表:
CREATE TABLE `my_tables` (`id` VARCHAR(32) NOT NULL ,`name` varchar(32) DEFAULT NULL,`age` int(32) DEFAULT NULL,`time` varchar(32) DEFAULT NULL,`pwd` varchar(32) DEFAULT NULL,PRIMARY KEY (`id`)) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
创建存储过程:
DROP PROCEDURE IF EXISTS my_insert;CREATE PROCEDURE my_insert()BEGINDECLARE n int DEFAULT 1;loopname:LOOPINSERT INTO `my_tables`(`name`,`age`,`time`,`pwd`) VALUES ('张三', 18, '0:0:0:0:0:0:0:1', '369');SET n=n+1;IF n=1000000 THENLEAVE loopname;END IF;END LOOP loopname;END;
生成数据:
CALL my_insert();
第一种方式采用的主键是number类型的
下图是采用explain分析得出
接下来继续创建另一张表并生成数据
CREATE TABLE `my_tables2` (`id` VARCHAR(32) NOT NULL ,`name` varchar(32) DEFAULT NULL,`age` int(32) DEFAULT NULL,`time` varchar(32) DEFAULT NULL,`pwd` varchar(32) DEFAULT NULL,PRIMARY KEY (`id`)) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
注意:这张表的主键采用的是varchar类型的
创建存储过程并生成数据:
DROP PROCEDURE IF EXISTS proc_insert;DELIMITER $CREATE PROCEDURE pro_insert2()BEGINDECLARE i INT DEFAULT 1;WHILE i<=1000000 DOINSERT INTO `my_tables2`(id,`name`,`age`,`time`,`pwd`) VALUES (i,'张三', 18, '0:0:0:0:0:0:0:1', '369');SET i = i+1;END WHILE;END $;CALL pro_insert2();
下图是第二种用主键查询的结果
如果有小伙伴对explain不太明白的可以去看看博客 https://blog.csdn.net/why15732625998/article/details/80388236
前后分析得出 使用uuid或者数字作为主键它的查询效率相差的并没有想象中的大,几乎可以忽略不记 只有key_len有些差别。
key_len:表示索引中使用的字节数,可通过该列计算查询中使用的索引的长度,在不损失精确性的情况下,长度越短越好
。key_len显示的值为索引字段的最大可能长度,并非实际使用长度,即key_len是根据表定义计算而得,不是通过表内检索出的。
以上是“mysql中主键使用数字还是uuid会让查询更快”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网数据库频道!
--结束END--
本文标题: MySQL中主键使用数字还是uuid会让查询更快
本文链接: https://www.lsjlt.com/news/300001.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-05-22
2024-05-22
2024-05-22
2024-05-22
2024-05-22
2024-05-22
2024-05-22
2024-05-21
2024-05-21
2024-05-21
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
一口价域名售卖能注册吗?域名是网站的标识,简短且易于记忆,为在线用户提供了访问我们网站的简单路径。一口价是在域名交易中一种常见的模式,而这种通常是针对已经被注册的域名转售给其他人的一种方式。
一口价域名买卖的过程通常包括以下几个步骤:
1.寻找:买家需要在域名售卖平台上找到心仪的一口价域名。平台通常会为每个可售的域名提供详细的描述,包括价格、年龄、流
443px" 443px) https://www.west.cn/docs/wp-content/uploads/2024/04/SEO图片294.jpg https://www.west.cn/docs/wp-content/uploads/2024/04/SEO图片294-768x413.jpg 域名售卖 域名一口价售卖 游戏音频 赋值/切片 框架优势 评估指南 项目规模 安全指南 Osprey 游戏分析 游戏调试 游戏图形 游戏物理 开源库
0