文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

MySQL中主键使用数字还是uuid会让查询更快

2023-06-20 20:23

关注

这篇文章主要介绍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分析得出

MySQL中主键使用数字还是uuid会让查询更快

接下来继续创建另一张表并生成数据

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();

下图是第二种用主键查询的结果

MySQL中主键使用数字还是uuid会让查询更快

如果有小伙伴对explain不太明白的可以去看看博客 https://blog.csdn.net/why15732625998/article/details/80388236

前后分析得出 使用uuid或者数字作为主键它的查询效率相差的并没有想象中的大,几乎可以忽略不记 只有key_len有些差别。

key_len:表示索引中使用的字节数,可通过该列计算查询中使用的索引的长度,在不损失精确性的情况下,长度越短越好。key_len显示的值为索引字段的最大可能长度,并非实际使用长度,即key_len是根据表定义计算而得,不是通过表内检索出的。

以上是“MySQL中主键使用数字还是uuid会让查询更快”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网行业资讯频道!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯