MySQL主键类型使用varchar还是bigint?

MySQL主键的数据类型选择与编程 在MySQL数据库中,主键是一种用于唯一标识表中每个记录的字段或字段组合。选择适当的数据类型来定义主键字段是非常重要的,因为它将直接影响到数据库的性能和数据的完整性。下面将详细介绍一些常用的MySQL主键数据类型以及如何在编程中使用它们。这些是一些常见的MySQL主键类型和在编程中使用它们的示例。根据具体的应用场景和数据需求,选择适当的主键类型非常重要。通过正确选择和使用主键类型,可以提高数据库的性能和数据的完整性。整数型主键是最常见的主键类型之一,因为它们在性能和存储方面非常高效。 阅读详情

主键使用bigint和varchar对比

环境准备

准备两张表
除了id的类型不一样其他都一样
table1:
在这里插入图片描述
table2:
在这里插入图片描述
准备100w条数据
id长度19位
两张表数据一致
table1、table2
在这里插入图片描述

数据对比

table1:
在这里插入图片描述
table2:
在这里插入图片描述

使用mysql自带的表information_schema.tables查看表的大小信息
information_schema.tables表里的数据不准,使用count统计,行数对不上,
不知道有没有别的方法统计表大小,先凑合(有没有大神,请赐教)

table_nametyperowdata(MB)
table1varchar966301168.85
table2bigint990649155.17

bigint行数更多 数据所占更小

结

同样是19位id

bigint 范围 0到18446744073709551615 占8个字节
varchar 可变长 以utf8字符集计算 19*3 占57个字节
一条数据 差 47个字节
一百万数据 47 * 1000000 / 1024 /1024 约 44.82 MB

所以 bigint比varchar 更省空间
聚合索引使用主键排序 每页16k 主键越小 每页数据更多 减少io 理论加快查询速度
实际没啥区别 可能是数据太少

对比MySQL中int、char以及varchar的性能 在本篇文章中我们给大家分享了关于MySQL中int、char以及varchar的性能对比的相关内容,有兴趣的朋友们学习下。 立即下载

相关推荐

保姆级教程:用Python和PyTorch复现PTB-XL心电信号分类论文(附完整代码)

本文提供了一份详细的PTB-XL心电信号分类教程,涵盖从数据预处理到模型优化的完整流程。通过PyTorch实现三种深度学习架构(Conv1D、SincNet和熵特征融合网络),并针对医疗AI特有的类别不平衡问题提供解决方案。教程包含可运行的代码示例,帮助开发者快速复现论文结果并应用于实际心电信号分析场景。

weixin_30555125的博客 405

MySQL主键类型使用int、bigint、varchar区别

MySQL主键类型使用int、bigint、varchar区别

旷野历程 9543

Cadence Allegro16.6怎么导出器件引脚信息的报告

当我们需要用到器件的引脚相关信息时,可以利用allegro中的reports这个功能导出器件的相关信息。下面是具体的操作步骤。

suyucheng66的博客 5747

mysql 表的id 使用自增int和自定义varchar的优缺点以及界限

偶然的机会,得知mysql主键的类型采用 varchar 存UUID 的查询性能没有int型做主键好。网上查询大量资料,都是停留在理论上的,因此,自己写了代码进行实测,以下结果仅供参考,不具备权威性。 三个表的字段,除了主键ID 分别采用varchar,bigint 和自动增长bigint不同外,其他三个字段都为 varchar 36位 数据库:mysql5.5 表类型:InnoDB 数据...

qq794096244的专栏 8008

STM32F103C8T6驱动DHT11温湿度传感器程序

本程序基于 STM32F103C8T6 微控制器,通过 GPIO 模拟单总线通信时序实现对 DHT11 温湿度传感器的数据采集,主机采用拉低数据线的方式触发传感器启动,并通过检测高电平持续时间区分逻辑“0”和“1”,依次读取湿度和温度的整数数据及校验位,经过校验后将有效结果存入缓存数组,实现对环境温湿度的周期性测量与处理。

加斯顿工程师的博客 200

点云焊缝提取

本文介绍了一个基于PCL库的点云处理流程,包含三个核心模块:MLS平滑处理通过多项式拟合修正点云位置;差异提取通过双向匹配定位源/目标点云的非重叠区域;统计过滤剔除离群噪声点。该流程采用"平滑-筛选-净化"的通用思路,将复杂算法封装为可配置接口,实现了工业级点云预处理。文章重点分析了各模块的原理、PCL接口调用及参数设计逻辑,同时指出参数调优、算法扩展等深入探索方向,展现了PCL在点云处理中的模块化优势与实用价值。

weixin_45196569的博客 250

mysql性能优化之数据类型(持续更新)

对于无符号型的int类型来讲,int能表示的最大范围可以到2^32大概是43亿,一般的业务场景中,单表的数据量一般是在千万级别,所以对于大部分的业务场景来讲,43亿算是够用了。另外在来讲磁盘存储空间问题,8字节要比4字节占用空间更大,就好比是房间里面放一升水,本来用2L的水桶就可以,但是用4L的水桶去盛放势必占用的空间更大,毕竟房间大小是一定的,磁盘空间同理。IP地址格式:IP地址通常用“点分十进制”表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~255之间的十进制整数。......

weixin_43401380的博客 1032

[QMT量化交易小白入门]-104、QMT平台运行深度学习模型,预测期货价格

本专栏主要是介绍QMT的基础用法,常见函数,写策略的方法,也会分享一些量化交易的思路,大概会写100篇左右。QMT的相关资料较少,在使用过程中不断的摸索,遇到了一些问题,记录下来和大家一起沟通,共同进步。

木头大左的博客 485

varchar && bigint 执行效率及区别

在数据库表设计的过程中,总会遇到某个字段到底使用何种类型的困惑?比如身份证11位,我如果使用int类型的话,肯定不行,个数都超额了;所以一般采用的办法就是使用varchar,自定义使用长度,很好的办法。不过最近发了bigInt的使用,下边通过测试来对比一下两者的性能使用情况: 第一种情况:idcardno为varchar类型的时候 查询整体使用的耗时: 如图:执行时间0.001sec

不管风吹浪打,胜似闲庭信步 1万+

WEB浏览器视频流播放方案

基于Media Source Extensions播放视频流 浏览器播放视频的几种方法 一、H5 video标签 在浏览器播放视频,可以使用HTML5原生的video标签。但其播放的格式使用一定限制的,目前video只支持三种格式WebM、Ogg、MP4。 WebM:WebM 文件使用 VP8 视频编解码器和 Vorbis 音频编解码器 Ogg :Ogg 文件使用 Theora 视频编解码器和 Vorbis音频编解码器 MP4: MPEG 4文件使用 H264 视频编解码器和AAC音频编解码器 上面三种

machh的专栏 2381

11、机器学习中的聚类与隐马尔可夫模型

本文介绍了机器学习中的两种重要方法:聚类算法和隐马尔可夫模型(HMM)。聚类作为无监督学习的代表,适用于发现无标签数据中的结构,常见算法包括K-均值和自组织映射(SOM),并在传感器数据分析等场景中展现应用价值。隐马尔可夫模型则是一种可解释的序列模型,用于从观测数据中推断隐藏状态,广泛应用于语音识别、自然语言处理和生物信息学等领域。文章详细讲解了HMM的核心概念如马尔可夫性质、转移与发射概率,并通过TensorFlow实现了前向算法,展示了其计算观测序列概率的动态规划思想。最后对比了两类方法的应用场景,展望

garlic的博客 179

MySQL 自增主键实操:Char和Varchar类型无法 AUTO_INCREMENT 解决办法

本文记录 MySQL 建表实操踩坑:char 字符串主键无法使用 AUTO_INCREMENT 自增,整理两种实现 P001 自动编号的完整方案,附带可运行 SQL 代码,适合数据库新手学习复习。

2603_95954545的博客 258

YOLOv8全网首发:CVPR2026 MixerCSeg | DEGConv方向引导边缘门控,破解细长裂缝检测难题

DEGConv通过方向先验嵌入、边缘增强卷积和动态门控三大机制,针对性解决了YOLO在处理裂缝类细长、多方向、低对比度目标时的特征提取不足问题,显著提升了裂缝检测的精度与鲁棒性。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 518

mysql bigint varchar_MySQL BIGINT(20)与Varchar(31)的性能

这实际上必须加以衡量,我们可以根据我们所知道的和我们的假设做出一些“猜测”,但这只是猜测.您没有提到此表是InnoDB,还是带有动态行的MyISAM,还是带有固定长度行的MyISAM.这将有所作为.但是对于您发布的值’961637593864109_412954765521130′(31个字符),假设您使用的是单字节字符集(例如latin1)或将那些特定字符编码为单个字节的字符集(例如utf8)…...

weixin_42366954的博客 1303

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

MySQL 常见数据类型

外键字段通常要和被引用表的主键类型保持一致。如果用户表主键是。

weixin_54946088的博客 150

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

数据表info中包含4个字段,id,name,age,birthday字段,试写出4个字段的mysql数据类型

4. birthday字段:对应生日,可以使用日期时间类型,比如DATE或DATETIME。2. name字段:对应名称,可以使用字符串类型,比如VARCHAR或TEXT。3. age字段:对应年龄,可以使用整数类型,比如INT或TINYINT。1. id字段:对应主键,可以使用整数类型,比如INT或BIGINT。

weixin_57197644的博客 1250

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

mysql使用uuid做外键效率_mysql5.5 uuid做主键与int做主键的性能实测

偶然的机会,得知mysql主键的类型采用 varchar 存UUID 的查询性能没有int型做主键好。网上查询大量资料,都是停留在理论上的,因此,自己写了代码进行实测,以下结果仅供参考,不具备权威性。三个表的字段,除了主键ID 分别采用varchar,bigint 和自动增长bigint不同外,其他三个字段都为 varchar 36位数据库:mysql5.5表类型:InnoDB数据量:100W条第...

weixin_28826545的博客 397

MySQL数据类型全攻略:从int、varchar到datetime的避坑指南

在数据库设计中,数据类型的选择是影响系统稳定性和性能的关键环节。无论是订单表里的手机号字段,还是用户表中的余额字段,一旦选错类型,就可能导致数据溢出、精度丢失或索引失效。MySQL作为主流关系型数据库,提供了从整数(int、bigint)到字符串(char、varchar)以及日期时间(datetime、timestamp)等多种类型,每种类型在存储空间、取值范围和查询效率上各有取舍。理解其底层存储原理,掌握decimal与float的精度差异、varchar与char的变长特性、datetime与time

weixin_33391446的博客 279

mysql alter null_mysql“默认”列值NULL在执行PRIMARY KEY的alter table时正在被擦除

我在Mysql数据库中创建了一个新的新表。 我添加了一个新字段,名为“rks”,默认为空,数据类型为varchar(20)。mysql“默认”列值NULL在执行PRIMARY KEY的alter table时正在被擦除如果我执行alter table,修改这个字段,我可以看到默认列中的“NULL”被删除为空(万一它是主键),但是如果万一我降级它从主键,对这个变量进行修改,保留状态“NULL”。请注...

weixin_29774679的博客 585

java实体类中对应数据库的数据类型

1、常见类型 mysql类型 oracle类型 JAVA类型 说明 BIGINT Number(16) Long 主键,订单号 VARCHAR() VARCHAR2(20) String 字符串 INT NUMBER(8) Integer 订单状态 DateTime DATE Date 日期 Decimal NUMBER(11,3) BigDecimal 货币,有小数的数值...

SirLZF的博客 1840

mysql表的id

mysql 表的id 使用自增int和自定义varchar的优缺点以及界限 https://blog.youkuaiyun.com/qq794096244/article/details/84938155 偶然的机会,得知mysql主键的类型采用 varchar 存UUID 的查询性能没有int型做主键好。网上查询大量资料,都是停留在理论上的,因此,自己写了代码进行实测,以下结果仅供参考,不具备权威...

sun007700的专栏 808

【数据库基础|第2篇】MySQL 常用数据类型详解

上一篇我们学习了数据库、表、字段、主键、外键这些基础概念。这一篇继续学习 MySQL 中非常重要的内容:数据类型。在创建表时,每个字段都必须指定数据类型。intvarchartinyintdatedatetime都是 MySQL 中的数据类型。数据类型选得是否合适,会影响数据存储、查询、计算和后期维护。这一篇我们就来系统梳理一下 MySQL 中常见的数据类型。不是。在 MySQL 中,int本身占 4 个字节,int(11)中的 11 不是数字范围。即可。

2401_88139521的博客 411

MYSQL字段数据类型详解

一、int类型 包括TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT几种类型。 数据类型 存储空间(字节) 取值范围 TINYINT 1 有符号(signed) : [-128, 127]

敲代码的小小酥的博客 791

MySQL数据类型

1.整型(xxxint) MySQL数据类型 含义 tinyint(m) 1个字节表示(-128~127) smallint(m) 2个字节表示(-32768~32767) mediumint(m) 3个字节表示(-8388608~8388607) int(m) 4个字节表示(-21474836

不知道要什么,便什么都想要,最后什么都要不到 930

MYSQL使用手记一

好记忆不如烂笔头,能记下点东西,就记下点,有时间拿出来看看,也会发觉不一样的感受。 0、不要受经典三范式的约束,在设计表结构时候,不必遵守三范式,三范式是一种很理性的状态,只存在于理论中,业务中很难真正满足。 1.MYSQL中的整型类型有:TINYINT、SMALLINT、MEDIUMINT、INT 和 BIGINT。 TINYINT占1个字节;SMALLINT占2个字节;MEDIUMINT占3个字节;INT占4个字节;TBIGINT占8个字节; 2、用自增整型做主键,一律使用 BIG...

草原孤狼的专栏 267

mysql 索引

虽然 UUID 是一种广泛使用的全局唯一标识符,但在 MySQL 中作为索引字段时,可能会因为其较大的存储空间和随机性带来显著的性能问题。特别是在使用CHAR(36)或类型存储 UUID 时,索引效率较低,插入操作频繁导致索引树的分裂,进而影响性能。建议在可能的情况下使用BINARY(16)类型存储 UUID,或者使用自增整数作为主键,优化性能。

liulanba的博客 2万+
上一篇: Java必会工具库,从此远离辣鸡代码(建议收藏)
长得赛
博客等级 码龄7年 5448粉丝 16原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值