首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

主键 - UUID主键的VARBINARY或BLOB或VARCHAR

主键是关系数据库中用于唯一标识表中每一行数据的一列或一组列。它具有以下特点:

概念:主键是用来唯一标识表中每一行数据的一列或一组列。它的值在整个表中必须是唯一的,且不能为空。

分类:主键可以分为自然主键和人工主键。自然主键是表中已经存在的某个属性,如身份证号码、学号等。人工主键是人为地为表中的每一行数据分配的一个唯一标识,通常使用自增长的整数。

优势:主键的存在可以提高数据的检索速度和数据的完整性。它可以作为索引,加快查询操作的速度。同时,主键的唯一性保证了数据的完整性,防止数据重复或冲突。

应用场景:主键在数据库中广泛应用于数据表的设计和关系建立。它可以用于唯一标识用户、订单、产品等实体,方便数据的管理和查询。

推荐的腾讯云相关产品和产品介绍链接地址:

以上是关于主键的概念、分类、优势、应用场景以及腾讯云相关产品的介绍。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

使用雪花iduuid作为Mysql主键,被老板怼了一顿!

,而是推荐连续自增主键id,官方推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究竟有什么坏处?...一、mysql和程序实例 1.1 要说明这个问题,我们首先来建立三张表 分别是user_auto_key,user_uuid,user_random_key,分别表示自动增长主键uuid作为主键,随机...long值 id自动生成表: 用户uuid表 随机主键表: 1.2 光有理论不行,直接上程序,使用springjdbcTemplate来实现增查测试: 技术框架: springboot+jdbcTemplate...带着疑问,我们来探讨一下这个问题: 二、使用uuid和自增id索引结构对比 2.1 使用自增id内部结构 自增主键值是顺序,所以Innodb把每一条记录都存储在一条记录后面。...减少了页分裂和碎片产生 2.2 使用uuid索引内部结构 因为uuid相对顺序自增id来说是毫无规律可言,新行值不一定要比之前主键值要大,所以innodb无法做到总是把新行插入到索引最后

1.2K20

使用雪花iduuid作为MySQL主键,被老板怼了一顿!

磊哥,前几天在做项目demo时候,使用雪花iduuid作为Mysql主键,被老板怼了一顿!...一、MySQL和程序实例 1.1 要说明这个问题,我们首先来建立三张表 分别是user_auto_key,user_uuid,user_random_key,分别表示自动增长主键,uuid作为主键,随机...用户uuid表 ? 随机主键表: ?...带着疑问,我们来探讨一下这个问题: 二、使用uuid和自增id索引结构对比 2.1 使用自增id内部结构 ? 自增主键值是顺序,所以Innodb把每一条记录都存储在一条记录后面。...因为uuid相对顺序自增id来说是毫无规律可言,新行值不一定要比之前主键值要大,所以innodb无法做到总是把新行插入到索引最后,而是需要为新行寻找新合适位置从而来分配新空间。

8.3K32
  • 使用雪花 id uuid 作为 MySQL 主键,被老板怼了一顿!

    `,`user_random_key`, 分别表示自动增长主键, uuid 作为主键, 随机 key 作为主键, 其它我们完全保持不变....根据控制变量法, 我们只把每个表主键使用不同策略生成, 而其他字段完全一样,然后测试一下表插入速度和查询速度: 注:这里随机 key 其实是指用雪花算法算出来前后不连续不重复**无规律**..., uuid 插入效率垫底,并且在后序增加了 130W 数据,uudi 时间又直线下降。...时间占用量总体可以打出效率排名为:auto_key>random_key>uuid,uuid 效率最低,在数据量较大情况下,效率直线下滑。那么为什么会出现这样现象呢?...uuid 索引内部结构** !

    2.9K00

    使用雪花iduuid作为Mysql主键,被老板怼了一顿!

    前言: 在mysql中设计表时候,mysql官方推荐不要使用uuid或者不连续不重复雪花id(long形且唯一),而是推荐连续自增主键id,官方推荐是auto_increment,那么为什么不建议采用...# mysql和程序实例 1.要说明这个问题,我们首先来建立三张表 分别是user_auto_key,user_uuid,user_random_key,分别表示自动增长主键,uuid作为主键,随机key...用户uuid表 随机主键表: 2.光有理论不行,直接上程序,使用springjdbcTemplate来实现增查测试: 技术框架: springboot+jdbcTemplate+junit...带着疑问,我们来探讨一下这个问题: # 使用uuid和自增id索引结构对比 1.使用自增id内部结构 自增主键值是顺序,所以Innodb把每一条记录都存储在一条记录后面。...因为uuid相对顺序自增id来说是毫无规律可言,新行值不一定要比之前主键值要大,所以innodb无法做到总是把新行插入到索引最后,而是需要为新行寻找新合适位置从而来分配新空间。

    1.6K10

    使用雪花iduuid作为Mysql主键,被老板怼了一顿!

    ---- 前言 在mysql中设计表时候,mysql官方推荐不要使用uuid或者不连续不重复雪花id(long形且唯一,单机递增),而是推荐连续自增主键id,官方推荐是auto_increment...,user_random_key,分别表示自动增长主键,uuid作为主键,随机key作为主键,其它我们完全保持不变....用户uuid表 ? 随机主键表: ?...带着疑问,我们来探讨一下这个问题: 二、使用uuid和自增id索引结构对比 2.1.使用自增id内部结构 ? 自增主键值是顺序,所以Innodb把每一条记录都存储在一条记录后面。...因为uuid相对顺序自增id来说是毫无规律可言,新行值不一定要比之前主键值要大,所以innodb无法做到总是把新行插入到索引最后,而是需要为新行寻找新合适位置从而来分配新空间。

    2.2K10

    为啥不能用uuid做MySQL主键

    在mysql中设计表时候,mysql官方推荐不要使用uuid或者不连续不重复雪花id(long形且唯一,单机递增),而是推荐连续自增主键id,官方推荐是auto_increment,...,user_random_key,分别表示自动增长主键,uuid作为主键,随机key作为主键,其它我们完全保持不变....long值 id自动生成表: image.png 用户uuid表 image.png 随机主键表: image.png 1.2.光有理论不行,直接上程序,使用springjdbcTemplate...带着疑问,我们来探讨一下这个问题: 二、使用uuid和自增id索引结构对比 2.1.使用自增id内部结构 image.png 自增主键值是顺序,所以Innodb把每一条记录都存储在一条记录后面...image.png 因为uuid相对顺序自增id来说是毫无规律可言,新行值不一定要比之前主键值要大,所以innodb无法做到总是把新行插入到索引最后,而是需要为新行寻找新合适位置从而来分配新空间

    3.9K20

    mysql开发规范

    例如千库十表、十库百表等 字段设计 尽可能不使用TEXT、BLOB类型 DECIMAL代替FLOAT和DOUBLE存储精确浮点数 Simple is good 将字符转化为数字 使用TINYINT来代替...ENUM类型 Generosity can be unwise 存储 “hello”时VARCHAR(5) VS VARCHAR(200) Avoid null if possible 所有字段均定义为...Smaller is usually better 使用UNSIGNED存储非负整数 INT类型固定占用4字节存储 使用timestamp存储时间 使用INT UNSIGNED存储IPV4 使用VARBINARY...,前缀索引长度不超过8个字符 建议优先考虑前缀索引,必要时可添加伪列并建立索引 主键准则 表必须有主键 不使用更新频繁列 尽量不选择字符串列 不使用UUID MD5 HASH 默认使用非空唯一键 建议选择自增发号器...重要SQL必须被索引 UPDATE、DELETE语句WHERE条件列 ORDER BY、GROUP BY、DISTINCT字段 多表JOIN字段 区分度最大字段放在前 核心SQL优先考虑覆盖索引

    1.7K170

    第17期:索引设计(主键设计)

    1.2 UUID主键 UUID 和自增主键一样,能保证主键唯一性。但是天生无序、随机产生、占用空间大。...MySQL 提供了以下优化方法来让原始 UUID 可以被用于表主键: 函数 uuid_to_bin MySQL 提供了函数 uuid_to_bin,把 UUID 字符串变为 16 个字节二进制串。...类似于某些数据库(比如 POSTGRESQL) UUID 类型。函数 uuid_to_bin 返回数据类型为 varbinary(16)。...varbinary(16) 依然是无序,为此 MySQL 还提供了一个函数 uuid_short,用来生成类似 UUID 全局 ID,结果为 INT64。...以下实验涉及到四张表: 新建 t_uuid: uuid主键 表 t_binary:varbinary(16) 为主键 表 t_uuid_short:bigint 为主键 新建表 t_id:自增 ID

    62210

    MySQL(数据类型和完整约束)

    3.字符串类型 包括CHAR、VARCHAR、BINARY、VARBINARYBLOB、TEXT、ENUM和SET等。 1....字符串可以进行区分或者不区分大小写串比较,另外,还可以进行模式匹配查找。MySQL中字符串类型指CHAR、VARCHAR、BINARY、VARBINARYBLOB、TEXT、ENUM和SET。...L+4字节,在此L<2^24 ENUM 枚举类型,只能有一个枚举字符串值 12个字节,取决于枚举值数目(最大值65535) SET 一个设置,字符串对象可以有0个多个SET成员 1,2,3,48...M+1个字节 TINYBLOB(M) 非常小BLOB L+1个字节,在此L<2^8 BLOB(M) 小BLOB L+2字节,在此L<2^16 MEDIUMBLOB(M) 中等大小BLOB L+3字节...host和port俩个字段 设置联合唯一主键 类型三 primary key设置主键 primary key 字段值不为空且唯一 可设置为主键(单列做主键 多列做主键(符合主键)) 单列主键

    95520

    必要商城MySQL开发规范

    对前10个字符进行索引能够节省大量索引空间,也可能会使查询更快 表必须有主键 不使用更新频繁地列作为主键 尽量不选择字符串列作为主键 不使用UUID、MD5、HASH作为主键...默认使用非空唯一键 主键建议选择自增发号器重要SQL必须被索引: SELECT、UPDATE、DELETE语句WHERE条件列ORDER BY、GROUP BY、DISTINCT字段多表...,全表扫描导致bufferpool利用降低 五、字段设计规范 尽可能不要使用TEXT、BLOB类型 删除这种值会在数据表中留下很大"空洞",可以考虑把BLOBTEXT列分离到单独表中...as you really need VARCHAR(N),N表示是字符数不是字节数,比如VARCHAR(255),可以最大可存储255个汉字,需要根据实际宽度来选择NVARCHAR(N),N尽可能小...使用INT UNSIGNED存储IPV4 使用VARBINARY存储大小写敏感变长字符串 禁止在数据库中存储明文密码 六、SQL设计规范 使用预编译语句prepared statement

    68010

    数据库|数据存储结构深入

    一个 InnoDB 页面必须存储 >= 2 个键;辅助键记录还必须包含主键值。因此,如果主键和辅助键都处于此最大长度,则它必须小于页面上可用空间 1/4,包括记录开销。...在这个用例中,SSD 上较小块大小可能会明显更快。回到权衡——UUID(等)示例不是很常见。...This rule is bent a bit because the variable-length data types VARCHAR, VARBINARY, TEXT, and BLOB may...这条规则有点弯曲,因为可变长度数据类型 VARCHARVARBINARY、TEXT 和 BLOB 可能会溢出到其他页面。否则,给定行大小必须小于 8KB。...为了避免在启动过程中奔溃后重放完整日志内容,内存数据库维护了一个备份副本。该备份副本使用一个基于磁盘且已排序数据结构。并且对该结构修改通常是异步(与客户端请求解耦)且分批处理

    71910

    MySQL开发规范

    对前10个字符进行索引能够节省大量索引空间,也可能会使查询更快 表必须有主键 不使用更新频繁地列作为主键 尽量不选择字符串列作为主键 不使用UUID、MD5、HASH作为主键...默认使用非空唯一键 主键建议选择自增发号器重要SQL必须被索引: SELECT、UPDATE、DELETE语句WHERE条件列ORDER BY、GROUP BY、DISTINCT字段多表...,全表扫描导致bufferpool利用降低 五、字段设计规范 尽可能不要使用TEXT、BLOB类型 删除这种值会在数据表中留下很大"空洞",可以考虑把BLOBTEXT列分离到单独表中...as you really need VARCHAR(N),N表示是字符数不是字节数,比如VARCHAR(255),可以最大可存储255个汉字,需要根据实际宽度来选择NVARCHAR(N),N尽可能小...使用INT UNSIGNED存储IPV4 使用VARBINARY存储大小写敏感变长字符串 禁止在数据库中存储明文密码 六、SQL设计规范 使用预编译语句prepared statement

    83210

    【建议收藏】MySQL 三万字精华总结 + 面试100 问(一)

    聚簇索引文件存放在主键索引叶子节点上,因此 InnoDB 必须要有主键,通过主键索引效率很高。但是辅助索引需要两次查询,先查询到主键,然后再通过主键查询到数据。...因为InnoDB 表只是把自增主键最大ID记录到内存中,所以重启数据库对表进行OPTION操作,都会导致最大ID丢失。...不同点: char不论实际存储字符数都会占用n个字符空间,而varchar只会占用实际字符应该占用字节空间加1(实际长度length,0255)。...字符串类型是:SET、BLOB、ENUM、CHAR、CHAR、TEXT、VARCHARBLOB和TEXT有什么区别? BLOB是一个二进制对象,可以容纳可变数量数据。...有四种类型BLOB:TINYBLOB、BLOB、MEDIUMBLO和 LONGBLOB TEXT是一个不区分大小写BLOB

    49710

    一文了解Mysql

    Mysql中InnoDB引擎支持4种事务隔离级别 Mysql中如何使用ENUM? Mysql中存储引擎 mysql中char与varchar区别? 主键和候选键区别?...varchar:不定长,可以节省空间。varchar需要在数据之前使用一到两个字节存储数据长度。最多情况下可以存储65532个字符数。 主键、超键和候选键区别?...只能存储纯文本,可以看作是VARCHAR在长度不足时扩展。...blobblob存储是二进制数据,因此无需字符集校验,blob除了存储文本信息外,由于二进制存储格式,所以还可以保存图片等信息,blob可以看作是VARBINARY在长度不足时扩展。...保存检索数据不删除尾部空格。 索引在blob或者text上必须执行索引前缀长度。 不同点 text大小写不敏感,而blob排序和比较以大小写敏感方式执行。

    91620
    领券